Pandas多级索引按列分组

16

在Multiindex中是否有任何方法可以对列使用groupby。我知道你可以对行进行操作,并且在这方面有很好的文档。然而,我似乎无法对列进行分组。我唯一的解决方案是转置数据帧。

#generate data (copied from pandas example)
arrays=[['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 8), index=['A', 'B', 'C'], columns=index)

现在我将尝试按列进行分组,但会失败

df.groupby(level=1)
df.groupby(level='first')

然而,使用行进行转置是有效的。

df.T.groupby(level=1)
df.T.groupby(level='first')

那么有没有一种方法可以在不转置的情况下完成这个操作?

1个回答

29

使用 groupby 方法时需要指定轴:

df.groupby(level = 1, axis = 1).sum()

在这里输入图像描述

或者如果您指的是按0级分组:

df.groupby(level = 0, axis = 1).sum()

这里输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接