如何在 .groupby() 和 .agg() 后从 pandas DataFrame 获取子列?

2 投票
1 回答
24 浏览
提问于 2025-04-13 01:24

我正在尝试对一个Pandas数据框进行分组和聚合操作。具体来说,我想计算每个类别组的平均值和计数。不过,我在访问生成的列时遇到了一些问题。

这是我想要的转换示例:

import pandas as pd

df = pd.DataFrame({
    'Class': ['A', 'B', 'A', 'B', 'C'],
    'Val': [25, 30, 35, 40, 15],
})

grouped = df.groupby(by='Class').agg({'Val': ['mean', 'count']})

我得到的结果如下:

    Val
         mean  count
Class
A        30.0      2
B        35.0      2
C        15.0      1

但是,我想去掉“Val”这个子列,以达到这个数据结构:

Class   mean  count
A       30.0      2
B       35.0      2
C       15.0      1

1 个回答

1

你应该在使用 agg 之前进行切片:

grouped = df.groupby(by='Class', as_index=False)['Val'].agg(['mean', 'count'])

输出结果:

  Class  mean  count
0     A  30.0      2
1     B  35.0      2
2     C  15.0      1

撰写回答