python - pandas groupby 索引值

标签 python pandas

是否可以按索引标签(而不是列标签)进行分组?这看起来应该是微不足道的,所以也许我错过了一些东西。

import pandas as pd
import numpy as np
df = pd.DataFrame([['a', 'b', 'c'], 
                   ['a', 'a', 'b'], 
                   ['b', 'b', 'c']],
                  index=['q', 'r', 's'], 
                  columns=['x', 'y', 'z'])
df
    x   y   z
q   a   b   c
r   a   a   b
s   b   b   c

这正如我所期望的那样:

df.groupby('x', axis=0).agg(sum)

    y   z
x       
a   ba  cb
b   b   c

但是这失败了

df.groupby('s', axis=1).agg(sum)

出现KeyError

我希望得到的是:

s   b   c
q   ab  c
r   aa  b

是否可以按索引值进行分组?我意识到我可以转置表格,但是我需要执行多个分组,如果我可以避免这种情况,那么出错的可能性会小得多。另外,如果axis参数没有指定要应用groupby的轴,它会做什么?

最佳答案

我认为 df.groupby('r', axis=1).agg(sum) 中的 r 应该是 s。也许这是你的错误?

无论如何,

您可以根据索引值进行分组,如下所示。 (我的解决方法...)

print df[~df.index.isin(['s'])].groupby(df.loc['s'], axis=1).agg(sum)

s   b  c
q  ab  c
r  aa  b

关于python - pandas groupby 索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948407/

相关文章:

python - 仅累积一列的 numpy 数组

python - 从理解中消除理解中的冗余函数调用

python - Django 类型错误 : authenticate() takes exactly 0 arguments (3 given)

python - 如何在 PyTorch 中使用 double 作为 float 的默认类型

python - ValueError : The truth value of a Series is ambiguous. 使用 a.empty、a.bool()、a.item()、a.any() 或 a.all():返回具有空值的列

python - 无法导入 Tensorflow "No module named copyreg"

pandas - 有没有办法在忽略索引的同时水平连接相同长度的数据帧?

python - 使用循环创建带有 Dataframe Pandas 的 Excel 工作表

python - 使用值出现次数在 Pandas 中创建数据透视表

python - 如何在 python 中的 pandas 中对 groupby 结果执行函数?