使用其他Agg函数对DateTimeIndex的Agg平均值进行分组



我希望使用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
})

最新更新