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

Python Groupby迭代报错:TypeError: 'int'对象不可迭代

解决TypeError: 'int' object is not iterable问题的思路

嘿,我来帮你排查这个报错的问题!首先咱们先明确你遇到的场景:

你运行这段代码时触发了错误:

for names, group in df_group: print(str(names))

报错回溯信息如下:

Traceback (most recent call last):
File "", line 1, in
TypeError: 'int' object is not iterable

同时你提供的df_group示例输出看起来像是包含symbol、exchange、price列的数据集内容。

问题根源分析

这个错误的核心是:你试图迭代的df_group并不是一个可迭代的分组对象(比如pandas的GroupBy对象),而是一个整数类型变量,或是无法按(names, group)解构的对象。常见原因有两种:

  1. 你误将聚合后的结果(比如groupby().sum()、groupby().size()返回的标量/Series/DataFrame)赋值给了df_group,而非保留原始的GroupBy对象;
  2. 你可能不小心把分组的数量(比如groupby().ngroups,返回一个整数)赋值给了df_group,直接迭代整数当然会报错。

分步解决思路

1. 先确认df_group的真实类型

先运行这段代码,搞清楚你手里的df_group到底是什么:

print(type(df_group))
  • 如果输出是<class 'pandas.core.groupby.generic.DataFrameGroupBy'>或<class 'pandas.core.groupby.generic.SeriesGroupBy'>,那它是合法的可迭代分组对象;
  • 如果输出是<class 'int'>、<class 'pandas.core.series.Series'>或<class 'pandas.core.frame.DataFrame'>,那就是问题所在。

2. 修正分组对象的创建逻辑

如果df_group不是GroupBy对象,你需要回到分组步骤,确保拿到的是未聚合的分组对象:

# 假设你的原始数据集是df,按symbol和exchange列分组
df_group = df.groupby(['symbol', 'exchange'])
# 现在再执行迭代就不会报错了
for names, group in df_group:
    print(str(names))

这里的names会是一个元组(比如('AAPL', 'NASDAQ')),group则是对应分组的子DataFrame。

3. 如果是聚合后的结果,调整迭代方式

如果你本来就想处理聚合后的结果(比如每组的统计值),那不需要迭代GroupBy对象,直接遍历聚合后的结果即可:

# 示例:计算每组的平均价格并遍历
agg_result = df.groupby(['symbol', 'exchange'])['price'].mean()
for (symbol, exchange), avg_price in agg_result.items():
    print(f"Symbol: {symbol}, Exchange: {exchange}, 平均价格: {avg_price}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:01:32