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

为何在Pandas中使用for循环遍历DataFrame.iterrows()时需要指定index, row?

为什么使用iterrows()时必须添加index参数?

嘿,这个问题我当初刚用Pandas的时候也踩过坑!其实核心原因是得搞明白iterrows()这个方法到底返回什么内容:

  • data.iterrows()每次迭代时,返回的并不是单独的一行数据,而是一个包含两个元素的元组:
    1. 第一个元素是当前行的索引值(可以是整数、字符串等,取决于你的DataFrame索引类型)
    2. 第二个元素才是对应行的pandas.Series对象,也就是你原本想要操作的行数据

你之前写的for row in data.iterrows(),这里的row其实是整个元组。当你尝试用row["column_title_1"]去取列值时,相当于给元组传了字符串索引,但元组只能用整数或切片当索引,所以才会抛出TypeError: tuple indices must be integers or slices, not str的错误。

而for index, row in data.iterrows()这种写法,用到了Python的元组解包特性:它把迭代返回的元组拆成了两个变量,index接收索引值,row接收对应的Series行对象。这时候row["column_title_1"]就完全正常了,因为Series对象支持用列名作为索引来取值。

如果你的业务逻辑里确实不需要用到索引,也可以用下划线_来占位(这是Python里表示“不需要的变量”的惯例写法),比如:

import pandas
data = pandas.read_csv("data.csv")
for _, row in data.iterrows():
    print(row["column_title"])

这样既符合语法规范,也能清晰表达你不需要索引变量的意图~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:07:34