我有一个这样的熊猫数据框
id date time dif
01 2020-04-02 09:44:00
02 2020-04-02 09:50:23
03 2020-04-02 09:54:56
04 2020-04-03 10:24:42
05 2020-04-03 10:32:12
06 2020-04-03 11:12:21
...
我正在尝试做的是计算每一行与其前一天之间的时差(以分钟为单位)。所以结果应该是这样的
id date time dif
01 2020-04-02 09:44:00 6
02 2020-04-02 09:50:23 4
03 2020-04-02 09:54:56
04 2020-04-03 10:24:42 7
05 2020-04-03 10:32:12 40
06 2020-04-03 11:12:21
...
我的第一个想法是使用列日期的唯一值创建一个列表,然后尝试执行以下操作:
import pandas a dp
import numpy as np
...
dates = df.date.unique()
for d in dates:
df['dif'] = round(df['time'].diff(-1).dt.total_seconds().div(60),0) * -1
但是我觉得这并不容易...
DataFrameGroupBy.diff
与Series.dt.total_seconds
和一起使用Series.round
:
df['time'] = pd.to_timedelta(df['time'])
df['dif'] = df.groupby('date')['time'].diff(-1).dt.total_seconds().div(60).round().mul(-1)
或DataFrameGroupBy.shift
与减法一起使用:
df['dif'] = (df.groupby('date')['time'].shift(-1)
.sub(df['time'])
.dt.total_seconds()
.div(60)
.round())
print (df)
id date time dif
0 1 2020-04-02 09:44:00 6.0
1 2 2020-04-02 09:50:23 5.0
2 3 2020-04-02 09:54:56 NaN
3 4 2020-04-03 10:24:42 8.0
4 5 2020-04-03 10:32:12 40.0
5 6 2020-04-03 11:12:21 NaN
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句