我想对 pandas 数据框的一个级别进行分组,其索引和列是 Multiindex。我想对 header 的某一级别进行 groupby,但它给了我一个关键错误,我不知道为什么。
这个数据框可以用作示例:
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
arrays2 = [['bar','baz','foo','qux'],
['one','two','one','two'],
['a','b','c','d']]
tuples2 = list(zip(*arrays2))
header = pd.MultiIndex.from_tuples(tuples, names=['h1', 'h2'])
index = pd.MultiIndex.from_tuples(tuples2, names=['first', 'second','third'])
df2=pd.DataFrame(np.random.randn(3, 3), index=index[:3], columns=header[:3])
如果我尝试这样做
df2.groupby('h1',axis=1).sum()
我收到一个关键错误,但索引工作正常。
df2.groupby(df2.index.names[0],axis=0).sum()
原因是什么,如何解决?
最佳答案
添加级别
df2.groupby(level=['h1'],axis=1).sum()
Out[960]:
h1 bar baz
first second third
bar one a -1.077170 0.585508
baz two b -3.426262 -0.193342
foo one c 1.079590 0.336535
或者只是在这里进行sum
df2.sum(level=['h2'],axis=1)
Out[965]:
h2 one two
first second third
bar one a 0.028593 -0.520256
baz two b -3.986019 0.366415
foo one c 0.548203 0.867922
关于python - pandas groupby 多级标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52432356/