熊猫:使用datetime进行groupby和转换

时间:2015-08-12 14:24:29

标签: datetime pandas group-by transform

当我在包括dtype datetime64 [ns]列的多列上使用groupby-transform操作时,我仍然是一个有熊猫的初学者,偶然发现了一个非常奇怪的行为。

我的(玩具)示例是:

import pandas as pd
df = pd.DataFrame({'date': [pd.datetime(2014,3,17),    pd.datetime(2014,3,24), pd.datetime(2014,3,17)], 'hdg_id': [4041,4041,4041],'stock': [1.0,1.0,1.0]})

In[117]: df
Out[117]: 
    date  hdg_id  stock
0 2014-03-17    4041      1
1 2014-03-24    4041      1
2 2014-03-17    4041      1

我现在groupby date和hdg_id(对于hdg_id来说它很简单,因为只有一个唯一值,但是我需要多个分组来产生结果,我的实际应用程序当然更复杂):

In[118]: df.groupby(['date', 'hdg_id']).transform(sum)
Out[118]: 
           stock
0   0.000000e+00
1  4.940656e-324
2   0.000000e+00

这不是我预期的结果。如果我将列日期转换为类型字符串,我会得到我期望的结果:

In[129]: df['date']=df['date'].astype(str)
In[131]: df.groupby(['date', 'hdg_id']).transform(sum)
Out[131]: 
   stock
0      2
1      1
2      2

有人可以分享一些内容吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

是否有理由使用.transform(sum)?

你可以这样做: df.groupby(['date','hdg_id'])。sum() enter image description here

相关问题