我有一个时间戳列表:
Timestamp
2015-10-01 00:00:08
2015-10-01 00:00:18
2015-10-01 00:00:28
2015-10-01 00:00:38
2015-10-01 00:00:48
2015-10-01 00:00:58
2015-10-01 00:01:08
2015-10-01 00:01:17
我想从时间戳生成 TimeDelta,其中每个 TimeDelta 值都引用前一个时间戳,如下所示:
Timestamp TimeDelta
2015-10-01 00:00:08 00:00:00.000
2015-10-01 00:00:18 00:00:10.000
2015-10-01 00:00:28 00:00:10.000
2015-10-01 00:00:38 00:00:10.000
2015-10-01 00:00:48 00:00:10.000
2015-10-01 00:00:58 00:00:10.000
2015-10-01 00:01:08 00:00:10.000
2015-10-01 00:01:17 00:00:09.000
但我得到的是这个:
Timestamp TimeDelta
2015-10-01 00:00:08 00:00:00.000
2015-10-01 00:00:18 00:00:10.000
2015-10-01 00:00:28 00:00:20.000
2015-10-01 00:00:38 00:00:30.000
2015-10-01 00:00:48 00:00:40.000
2015-10-01 00:00:58 00:00:50.000
2015-10-01 00:01:08 00:01:00.000
2015-10-01 00:01:17 00:01:09.000
我使用以下代码:
df['TimeDelta'] = pd.TimedeltaIndex(df['Timestamp'])
谢谢!
最佳答案
使用 diff
方法计算相邻行的差异:
df['TimeDelta'] = df['Timestamp'].diff().fillna(0)
<小时/>
import pandas as pd
df = pd.DataFrame({'Timestamp': ['2015-10-01 00:00:08', '2015-10-01 00:00:18',
'2015-10-01 00:00:28', '2015-10-01 00:00:38', '2015-10-01 00:00:48',
'2015-10-01 00:00:58', '2015-10-01 00:01:08', '2015-10-01 00:01:17']})
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df['TimeDelta'] = df['Timestamp'].diff().fillna(0)
print(df)
产量
Timestamp TimeDelta
0 2015-10-01 00:00:08 00:00:00
1 2015-10-01 00:00:18 00:00:10
2 2015-10-01 00:00:28 00:00:10
3 2015-10-01 00:00:38 00:00:10
4 2015-10-01 00:00:48 00:00:10
5 2015-10-01 00:00:58 00:00:10
6 2015-10-01 00:01:08 00:00:10
7 2015-10-01 00:01:17 00:00:09
关于python - 如何从时间戳列生成 TimedeltaIndex,其中每个 TimeDelta 都是引用前一个时间戳生成的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312997/