我希望使用count和sum的agg函数对以下数据帧进行分组,但也希望获得数据帧的DateTimeIndex之间的平均时间差(以分钟为单位(。当我使用df.index时,我得到错误TypeError:不可更改类型:"DatetimeIndex">
data = df.groupby('letter').agg({'letter': 'count', 'occurences' : 'sum', df.index: lambda x: x.diff().mean().dt.minutes})})
如果我用"timestamp"作为列重置索引。
data = df.reset_index().groupby('letter').agg({'letter': 'count', 'occurences' : 'sum', 'timestamp': lambda x: x.diff().mean().dt.minutes})})
我得到错误AttributeError:"NaTType"对象没有属性"dt"。我相信这是因为字母"D"只有一个实例。我希望把它当作0分钟。
timestamp letter occurences
2021-11-29 12:00:00+00:00 A 100
2021-11-29 12:30:00+00:00 B 500
2021-11-29 13:00:00+00:00 B 300
2021-11-30 13:30:00+00:00 A 1000
2021-11-30 14:00:00+00:00 C 250
2021-11-29 14:30:00+00:00 A 100
2021-11-29 15:00:00+00:00 D 500
2021-11-29 15:30:00+00:00 A 300
2021-11-30 16:00:00+00:00 A 1000
2021-11-30 16:30:00+00:00 C 250
请尝试np.timedelta
data = df.reset_index().groupby('letter').agg({'letter': 'count', 'occurences' : 'sum', 'timestamp': lambda x: (x.diff().mean())/np.timedelta64(1, 'm')})
您可以使用:
data = df.groupby('letter').agg(
{'letter': 'count',
'occurences' : 'sum',
'timestamp': lambda x: x.diff().mean().total_seconds()/60.0
})