如果我设置以下数据框和字典(pandas 0.22.0):
我想按照这个字典进行分组,但结果似乎不正确:
当我期待类似这样的东西时
如果我有一个MultIndex作为起点,那么:
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的情况下获得所需的行为?
level
参数传递任何内容(或者level=None
)可以得到你想要的行为。如果没有 MultiIndex,我不知道level
的行为是否被定义得很好。 - Victor Chubukov