python - pandas groupby 多级标题

标签 python python-3.x pandas

我想对 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/

相关文章:

python - __init__() 恰好接受 1 个参数(给定 7 个)

python-3.x - python 3.x 导入错误 : No module named 'cStringIO'

python - pandas diff() 为一阶差分给出 0 值,我想要实际值

python - 如何使用 python boto 为 amazon S3 中存在的文件生成下载链接?

Python lambda 绑定(bind)到本地值

python - 如何从字典中打印特定的键值?

python - AWS Lambda - 读取 csv 并转换为 Pandas 数据帧

python - 匹配 DataFrame 列中字符串中的独立单词

python - Python 中的整数数组

python - 选择对象实例化的几种方法之一