python - Pandas - 在 groupby 之后从嵌套标题中选择多列

标签 python pandas dataframe pandas-groupby

假设我有以下数据集:

df = pd.DataFrame({'a'   : [1, 1, 3],
               'b'   : [4, 5, 6],
               'c'   : [7, 8, 9],
               'cat' : ['a', 'a', 'b']})

df 

cat = df.groupby('cat')

ag = cat.agg({ "a" : ["sum", "mean"],
           "b" : "count",
           "c" : "mean"})

print(ag)

      a        b     c
      sum mean count mean
cat                    
a     2    1     2   7.50
b     3    3     1   9.00

我想返回一个包含 (a,sum)(b,count) for (cat==a) 的 DataFrame >。在不展平标题的情况下我该如何做到这一点

      a    b    
      sum  count
cat                    
a     2      2 

最佳答案

您可以使用pd.DataFrame.xsaxis=1:

res = ag.xs([('a', 'sum'), ('b', 'count')], axis=1)

print(res)

      a     b
    sum count
cat          
a     2     2
b     3     1

关于python - Pandas - 在 groupby 之后从嵌套标题中选择多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074981/

相关文章:

python - 将计算值/差值除以先前值 -> 'slope'

python - 使用带有稀疏 scipy 矩阵的广播

python - 专门为涉及线程和图形的项目研究 Python

python - 解决pd.to_timedelta计算失败问题

python - Pandas .min() 方法似乎不是最快的

python - 如何计算两年之间的百分比变化并插入 Pandas 中的新 DataFrame 中?

python matplotlib 在axes.lines上迭代得到错误的长度

python - 即使在sys.path.append之后也无法导入python模块

python - Pandas /pyplot 散点图 : set axis labels not working

r - 数据框的子集,其中一列的倒数第二个值