python - 计算事件之间的时间差

标签 python pandas

我有一个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'])

我需要获得每个 a 事件和随后的 b 事件之间的平均时间。我正在尝试使用 shift 来生成一系列差异以对其进行平均,但我无法让它正常工作。

谢谢!

最佳答案

首先,将日期转换为日期时间,然后使用 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')

关于python - 计算事件之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40031569/

相关文章:

python - Pandas 值(value)错误: Shape of passed values

python - 在 Pandas 中保存 csv 文件时如何添加交替空行

python - Pandas - 如何将 RangeIndex 转换为 DateTimeIndex

python - Django 管理员 CIDR 类型

Python 查找不在集合中的数字

Python Selenium::Element 当前不可见

python - 排序函数未返回列表列表的正确结果

python - 计算 Pandas 数据框中的重复元素

python - 删除 Pandas 数据框行中的最高值和最低值

python - Pandas 系列的小时值到系列的日期