我有一个df
df = pd.DataFrame({'State': {0: "A", 1: "B", 2:"A", 3: "B", 4: "A", 5: "B", 6 : "A", 7: "B"},
'date': {0: '2016-10-13T14:10:41Z', 1: '2016-10-13T14:10:41Z', 2:'2016-10-13T15:26:19Z',
3: '2016-10-14T15:26:19Z', 4: '2016-10-15T15:26:19Z', 5: '2016-10-18T15:26:19Z',
6 :'2016-10-17T15:26:19Z', 7: '2016-10-13T15:26:19Z'}}, columns=['State', 'date'])
我需要获得每个事件和下一个b事件之间的平均时间。我尝试使用shift来产生一系列差异来平均它,但我无法让它发挥作用。
谢谢!
答案 0 :(得分:3)
首先,将日期转换为日期时间,然后使用DataFrame.diff
:
df.date = pd.to_datetime(df.date)
df.date.diff()
的产率:
0 NaT
1 0 days 00:00:00
2 0 days 01:15:38
3 1 days 00:00:00
4 1 days 00:00:00
5 3 days 00:00:00
6 -1 days +00:00:00
7 -4 days +00:00:00
Name: date, dtype: timedelta64[ns]
如果你想要平均值,你可以做类似
的事情df.date.diff().mean() # or possibly df.date.diff().abs().mean()
# Timedelta('0 days 00:10:48.285714')