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

Pandas使用groupby按domains字段分组未得预期结果如何解决

问题原因
  • email1.groupby('domains')执行后返回的是DataFrameGroupBy惰性计算对象,本身不会主动加载、输出分组后的结构化明细,直接打印只会显示对象的内存地址信息,不会返回预期的拆分后数据集。
  • 追加.count()属于分组聚合操作,会把每个域名下的所有行压缩成1行,统计各列的非空值数量,结果是聚合统计表,自然和「按domains拆分分组保留明细」的目标不符。
正确实现方式

根据需要的输出形式选对应代码即可:

  • 遍历查看所有分组的明细内容
# 生成分组对象
GR = email1.groupby('domains')
# 循环遍历每个分组,打印分组名和对应子数据集
for domain, sub_df in GR:
    print(f"=== 分组域名:{domain} ===")
    print(sub_df)
  • 把分组结果存为可按键取值的字典,方便后续调用
GR = email1.groupby('domains')
# 转为 {域名值: 对应子DataFrame} 格式的字典
group_result = dict(tuple(GR))

# 后续需要取某个域名的数据直接按key取即可,比如取163.com对应的数据
data_163 = group_result['163.com']
  • 快速校验分组效果,查看每个分组的前N行
GR = email1.groupby('domains')
# 查看每个域名分组的前3行数据,无需遍历
print(GR.head(3))
  • 如果需要保留原表行数,给每行匹配对应分组的统计值,用transform实现
# 新增列记录每个域名对应的总数据量,不会像count()那样压缩行数
email1['domain_total'] = email1.groupby('domains')['domains'].transform('count')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:06:26