您可以将 timedelta64 除以 np.timedelta64(1,'s') 以获得以秒为单位的增量。如果您真的想摆脱微秒精度,只需将其四舍五入为 0 位并除以 3600 即可获得以小时为单位的增量。
其实只有例子的倒数第二行是相关的,剩下的就是设置数据框。 (我将第二行更改为更精确的东西,我可以四舍五入。)
import pandas as pd
import numpy as np
data = [{'ID': 'X', 'Timestamp': '2014-12-15 00:00:00', 'Quantity': 4},
{'ID': 'X', 'Timestamp': '2014-12-15 01:25:00.435', 'Quantity': 7},
{'ID': 'X', 'Timestamp': '2014-12-15 02:00:00', 'Quantity': 5},
{'ID': 'X', 'Timestamp': '2014-12-15 03:00:00', 'Quantity': 5},
{'ID': 'X', 'Timestamp': '2014-12-15 04:00:00', 'Quantity': 0},
{'ID': 'Y', 'Timestamp': '2014-12-15 00:00:00', 'Quantity': 9},
{'ID': 'Y', 'Timestamp': '2014-12-15 01:00:00', 'Quantity': 1},
{'ID': 'Y', 'Timestamp': '2014-12-15 02:00:00', 'Quantity': 3},
{'ID': 'Y', 'Timestamp': '2014-12-15 03:00:00', 'Quantity': 2},
{'ID': 'Y', 'Timestamp': '2014-12-15 04:00:00', 'Quantity': 7},
]
df = pd.DataFrame(data)
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df['time_diff'] = df.groupby('ID')['Timestamp'].diff()
df['hour_diff'] = (df['time_diff']/np.timedelta64(1, 's')).round(0)/3600
print(df)
输出:
ID 数量 时间戳 time_diff hour_diff
0 X 4 2014-12-15 00:00:00.000 NaT NaN
1 X 7 2014-12-15 01:25:00.435 01:25:00.435000 1.416667
2 X 5 2014-12-15 02:00:00.000 00:34:59.565000 0.583333
3 X 5 2014-12-15 03:00:00.000 01:00:00 1.000000
4 X 0 2014-12-15 04:00:00.000 01:00:00 1.000000
5 Y 9 2014-12-15 00:00:00.000 NaT NaN
6 是 1 2014-12-15 01:00:00.000 01:00:00 1.000000
7 是 3 2014-12-15 02:00:00.000 01:00:00 1.000000
8 是 2 2014-12-15 03:00:00.000 01:00:00 1.000000
9 是 7 2014-12-15 04:00:00.000 01:00:00 1.000000