【发布时间】:2020-05-15 11:01:48
【问题描述】:
我正在尝试检测时间戳之间的差异低于某个阈值的时间序列。为此,我将时间戳列表转换为秒,并测量每个时间戳之间的差异。我已经编写了代码来执行此操作,但问题是当我测量天之间的差异时,每天第一行的时间差值应该为零。所以下面数据框中的值86390 应该是0。这只是一个人为的例子。多组如何将每组的第一个条目设置为0?
代码:
import pandas as pd
arr= []
df = pd.DataFrame(
{'date': ['2019-01-01 00:02:48.714000' , '2019-01-01 00:02:58.714000' , '2019-01-02 00:02:48.714000' , '2019-01-02 00:04:48.714000'],
'id': [1 , 2 , 3 , 4],
})
df['date'] = pd.to_datetime(df['date'])
for d in df['date'] :
arr.append(d.timestamp())
df.sort_values(by=['date'])
df['TIME_IN_SEC'] = arr
df['TIME_IN_SEC_SHIFT'] = df.TIME_IN_SEC.shift(1)
df['TIME_DIFF'] = df["TIME_IN_SEC"] - df["TIME_IN_SEC_SHIFT"]
list_values = []
for g in df.groupby(pd.Grouper(key='date',freq='D')) :
list_values.append(sum(g[1]['TIME_DIFF']) / len(g[1]))
df
渲染:
【问题讨论】:
标签: python pandas jupyter-notebook time-series jupyter