这看起来像是个小问题我有一个数据点列表,这些数据点每5分钟记录一次,重叠时间为2.5分钟(2.5分钟)。我还有记录开始的时间戳和另一个需要开始计时的时间戳(例如,计时器开始):x1c 0d1x
我需要计算从计时器开始到记录结束已经过去了多少小时,并创建一个 Dataframe ,其中一列是记录,另一列是记录所属的计时器开始的小时:例如:
| 记录|计时器启动后小时数|
| - ------|- ------|
| 零点二六二|无|
| 零点二四三|无|
| 零点二六三|无|
| 0.342| 1个|
| 零点七六五|1个|
| 零点一一一|1个|
| ...|...|
这是我在python中的做法:
import numpy as np
import pandas as pd
from math import floor
recordings = list(np.random.rand(1000)) # an example of recording
chronometer_start = 1670000000 #timestamp
start_recording = 1673280570 #timestamp
gap_in_seconds = start_recording - chronometer_start
# given that the recordings are of 5 minutes each but with 2.5 minutes overlap,
# I can calculate how many Null values to add at the beginning of the recording to
# fill the gap from the chronometer start:
gap_in_n_records = round(gap_in_seconds / 60 / 2.5)
# fill the gap with null values
recordings = [np.nan for _ in range(gap_in_n_records)] + recordings
minutes = [5] # the first recording has no overlap
for _ in range(len(recordings)-1):
minutes += [minutes[-1]+2.5]
hours = pd.Series(minutes).apply(lambda x: floor(x/60))
df = pd.DataFrame({
'recording' : recordings,
'hour' : hours
})
但我担心我会犯一些错误,因为我的数据与我的结果不一致。有更好的方法吗?
1条答案
按热度按时间bq3bfh9z1#
首先,总结一下,看看我的理解是否正确。你有一个在某个时间点开始的计时器(可能是几天前/几周前),你有一个数据点,所有这些数据点都需要5分钟。你要寻找的是数据点结束的小时(计时器开始后)。
对于前5条记录,将是:
| 记录索引|记录开始后分钟|
| - ------| - ------|
| 1个|五个|
| 第二章|七点五|
| 三个|十个|
| 四个|十二点五|
| 五个|十五|
所以我们可以总结成一个公式:
数据点n自记录开始以来经过的时间(分钟):5+(n-1)* 2.5
我们可以使用此公式和DataFrame的索引来计算自记录开始以来经过的时间,然后将记录开始和计时器开始之间经过的时间相加: