You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从pandas的groupby与agg聚合结果中获取类列数据?

解决pandas聚合后列名与内置方法重名的访问问题

当聚合后的列名是count或size时,这两个名称和DataFrame的内置方法/属性重名,直接用df.count或df.size会触发内置方法而非访问列数据,这里给你3种实用的解决方式:

1. 用方括号索引访问(最直接)

不管列名是否和内置方法冲突,方括号索引都是最稳妥的访问方式:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'B': ['x', 'x', 'y', 'y', 'y'],
    'C': [1, None, 3, 4, None]
})

# 按B分组,对C执行count和size聚合
agg_result = df.groupby('B')['C'].agg(['count', 'size'])

# 用方括号访问目标列
count_data = agg_result['count']
size_data = agg_result['size']

2. 聚合时重命名列(从根源避免冲突)

在agg操作时给聚合结果指定自定义别名,彻底避开和内置方法重名的问题:

# 聚合时直接重命名列
agg_result_renamed = df.groupby('B')['C'].agg(c_count='count', c_size='size')

# 之后可以直接用属性访问
count_data = agg_result_renamed.c_count
size_data = agg_result_renamed.c_size

3. 用loc或iloc定位列

通过位置或标签定位列,也能绕过名称冲突:

# 用loc按列名定位
count_data = agg_result.loc[:, 'count']

# 用iloc按列索引定位(假设count是第2列,索引从0开始)
count_data = agg_result.iloc[:, 1]

补充说明

  • agg_result.count()是DataFrame的内置方法,作用是计算每列的非空值数量,而非访问名为count的列;
  • agg_result.size是DataFrame的内置属性,返回整个DataFrame的元素总个数,所以会和列名冲突。

内容的提问来源于stack exchange,提问作者user2153235

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:30:02