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

为什么迭代pandas groupby求和后的结果无法遍历所有数据行?

原因说明

直接对Pandas的DataFrame执行for row in df遍历操作时,默认迭代的对象是DataFrame的列名,而非行数据。
你调用gk.sum()得到的结果里,只有Items Shipped是数值列,Name属于字符串类型,默认不会参与sum()聚合计算,会被自动丢弃,因此最终返回的DataFrame只有1个列Items Shipped,遍历的时候自然只会输出这个字符串。
另外groupby('ASIN')之后得到的聚合结果,ASIN会默认作为索引存在,不会出现在常规列里,这也是直接遍历拿不到ASIN字段的原因之一。

修复后的代码实现
  • 第一步先调整分组聚合逻辑,保留需要的字段:
import pandas as pd
df = pd.read_csv('data.csv')
# as_index=False 让ASIN作为普通列返回,而不是索引
# agg自定义每个字段的聚合规则:Name取同一个ASIN下的第一个值,Items Shipped求和
grouped_res = df.groupby('ASIN', as_index=False).agg(
    Name = ('Name', 'first'),
    Items_Shipped = ('Items Shipped', 'sum')
)

如果同一个ASIN对应多个Name需要全部保留,可以把Name的聚合规则改成Name = ('Name', ','.join),会把所有Name拼接成一个字符串。

  • 第二步用iterrows()方法迭代每一行数据:
for idx, row in grouped_res.iterrows():
    print(row['Name'], row['ASIN'], row['Items_Shipped'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:15:04