Python pandas groupby datetime.date对象不一致

Python pandas groupby datetime.date对象不一致,python,pandas,Python,Pandas,比如说 import datetime data={'date':[datetime.date(2020,1,i) for i in range(11,13)], 'a1':range(11,13), 'a2':range(21,23)} df=pd.DataFrame(data) 如果只按日期列分组,则一切正常 g=df.groupby('date') print(g.groups) g.get_group(list(g.groups.keys())[0]) 给予 然而

比如说

import datetime
data={'date':[datetime.date(2020,1,i) for i in range(11,13)],
     'a1':range(11,13),
     'a2':range(21,23)}
df=pd.DataFrame(data)
如果只按日期列分组,则一切正常

g=df.groupby('date')
print(g.groups)
g.get_group(list(g.groups.keys())[0])
给予

然而,若我们按两列分组以形成多索引,那个么我们就遇到了问题

g=df.groupby(['date','a1'])
print(g.groups)
g.get_group(list(g.groups.keys())[0])
给予

和错误消息

---------------------------------------------------------------------------KeyError回溯(最近的呼叫 最后)在 1g=df.groupby(['date','a1'])) 2份印刷品(g组) ---->3 g.get_组(列表(g.groups.keys())[0])

~/anaconda3/lib/python3.7/site-packages/pandas/core/groupby/groupby.py 在get_组中(self、name、obj) 678 inds=self.\u get\u索引(名称) 679如果不是len(IND): -->680 raise KeyError(名称) 681 682返回对象获取(inds,轴=自身轴)

KeyError:(时间戳('2020-01-11 00:00:00'),11)


我们可以看到,pandas
groupby
太聪明了,无法将
datetime.date
对象更改为
Timestamp
对象。而且索引混乱,我们无法得到正确的组。这是一个bug吗?

IIUC您可以尝试这样分组:

g=df.groupby([['date','a1']])
print(g.groups)
g.get_group(list(g.groups.keys())[0])
{(Timestamp('2020-01-11 00:00:00'), 11): Int64Index([0], dtype='int64'), (Timestamp('2020-01-12 00:00:00'), 12): Int64Index([1], dtype='int64')}
g=df.groupby([['date','a1']])
print(g.groups)
g.get_group(list(g.groups.keys())[0])