当我在包括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
有人可以分享一些内容吗?
非常感谢!