我如何计算大熊猫的平均时间?

时间:2017-11-30 11:41:19

标签: python pandas

我有一个看起来像这样的数据框(每date row描述每个事件发生的时刻):

                          date
93286  2017-11-24 20:44:51.571              
93287  2017-11-24 20:45:01.571              
93288  2017-11-24 20:45:11.664      
93289  2017-11-24 20:45:21.664             
93290  2017-11-24 20:45:23.758        
93291  2017-11-24 20:45:34.071       
93292  2017-11-24 20:45:39.164        
93293  2017-11-24 20:45:44.664       
93294  2017-11-24 20:45:58.664        
93295  2017-11-24 20:46:54.774  
93296  2017-11-24 20:46:55.571 

我的目标是计算每分钟的平均时间。所以我认为我首先需要通过df['diff'] = df['date'] - df['date'].shift(1)

从当前日期中减去先前日期
                          date  diff
93286  2017-11-24 20:44:51.571  NaT   
93287  2017-11-24 20:45:01.571  00:00:10  
93288  2017-11-24 20:45:11.664  00:00:10.093   
93289  2017-11-24 20:45:21.664  00:00:10    
93290  2017-11-24 20:45:23.758  00:00:02.094
93291  2017-11-24 20:45:34.071  00:00:10.313
93292  2017-11-24 20:45:39.164  00:00:05.093
93293  2017-11-24 20:45:44.664  00:00:05.5
93294  2017-11-24 20:45:58.664  00:00:14      
93295  2017-11-24 20:46:58.774  00:00:00.11
93296  2017-11-24 20:46:59.571  00:00:00.797

但现在我不知道如何得到一个显示每分钟平均时间的结果,如:

               date     mean
2017-11-24 20:45:00 8.386625

我尝试使用pivot_table,但它无法正常工作。

>>> df.pivot_table(index=[pd.Grouper(key='date', freq='1min')],aggfunc='mean')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "d:\python36-32\lib\site-packages\pandas\core\generic.py", line 3081, in __getattr__
    return object.__getattribute__(self, name)
AttributeError: 'Series' object has no attribute 'pivot_table'

如何使用此数据框计算平均时间?

1 个答案:

答案 0 :(得分:1)

尝试aggfunc=pd.Series.mean'mean'可能只适用于数值数据类型:

df.pivot_table(index=pd.Grouper(key='date', freq='1min'),aggfunc=pd.Series.mean)

                             diff
date                               
2017-11-24 20:44:00             NaT
2017-11-24 20:45:00 00:00:08.386625
2017-11-24 20:46:00 00:00:28.453500