我有一个像
这样的数据框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时代以来的纳秒,但这非常难看,我觉得必须有更好的方法。有什么想法吗?
答案 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