pandas datetime系列上的聚合仅作为datetime系列返回

时间:2014-06-26 19:06:54

标签: python datetime numpy pandas

我有一个像

这样的数据框
test = pd.DataFrame({'date': ['2013-10-14 21:46:40', '2013-07-17 02:55:06', '2013-01-28 20:25:17'], 'category': [1, 1, 2]})
test['date'] = pd.to_datetime(test['date'])

     category                  date
0           1   2013-10-14 21:46:40
1           1   2013-07-17 02:55:06
2           2   2013-01-28 20:25:17

我想计算每个类别的一些摘要统计数据,特别是最早和最晚的日期以及每个类别中的项目数。 (对我而言)显而易见的方法是:

test.groupby('category')['date'].agg([len, min, max])

但是当我执行此操作时,len列会自动转换为np.datetime64,我认为这种情况正在发生,因为它是原始date列的dtype:< / p>

                                     len                   min                   max
category                                                                                    
1          1970-01-01 00:00:00.000000002   2013-07-17 02:55:06   2013-10-14 21:46:40
2          1970-01-01 00:00:00.000000001   2013-01-28 20:25:17   2013-01-28 20:25:17

我可以返回并将此len列重新转换为自GMT时代以来的纳秒,但这非常难看,我觉得必须有更好的方法。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用'size';这是一个API错误(因为len应该直接翻译为size),请参阅here

In [5]: test.groupby('category')['date'].agg(['size', min, max])
Out[5]: 
          size                 min                 max
category                                              
1            2 2013-07-17 02:55:06 2013-10-14 21:46:40
2            1 2013-01-28 20:25:17 2013-01-28 20:25:17