Pandas GroupBy没有MultiIndex

时间:2018-03-20 16:45:44

标签: python pandas

如果我设置以下DF和字典(pandas 0.22.0):

kwargs = {
  'index': ['11-1000', '11-1001', '11-1002'],
  'data': np.random.randint(5, size=(3,2)),
  'columns': ['A', 'B']
}
df = pd.DataFrame(**kwargs)

df         A  B
>> 11-1000 2  1
>> 11-1001 1  4
>> 11-1002 2  3

by = {'11-1001': '11-1000', '11-1002': '11-1000'}

并希望按此词典分组,结果似乎不正确:

df.groupby(by=by, level=0).get_group('11-1000')
>>         A B
>> 11-1000 2 1

当我期待像

这样的东西时
>>         A  B
>> 11-1001 1  4
>> 11-1002 2  3

如果我开始使用MultIndex,那么:

df = df.set_index('A", append=True)
df
>>            B
>>         A
>> 11-1000 2  1
>> 11-1001 1  4
>> 11-1002 2  3
然后看来groupby给了我想要的东西:

df.groupby(by=by, level=0).get_group('11-1000')
>>            B
>>         A
>> 11-1001 1  4
>> 11-1002 2  3

对此有何想法?我几乎总是使用带有MultiIndex的groupby,所以我之前没有看到过这种行为,也不确定它是否正常。如果没有MultiIndex,我怎样才能获得所需的行为?

1 个答案:

答案 0 :(得分:1)

我认为level参数的行为在没有MultiIndex的情况下没有特别好的定义。

传递level=None(默认值)会获得您想要的行为。