如果我设置以下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,我怎样才能获得所需的行为?
答案 0 :(得分:1)
我认为level
参数的行为在没有MultiIndex的情况下没有特别好的定义。
传递level=None
(默认值)会获得您想要的行为。