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

Pandas中使用iterrows()获取行name值而非索引的问题

问题:Pandas iterrows()遍历行时,输出name列得到的是索引值而非实际内容

问题原因

你遇到的问题是因为iterrows()返回的row是一个Series对象,这个对象自带的.name属性指向的是DataFrame的行索引(默认是0、1这类自增数字),而不是你CSV里的name列。刚好你的列名也是name,和Series的内置属性重名了,所以直接用row.name会调用到Series的索引名称,而非列值。

解决代码

把row.name改成row['name']就能正确获取CSV里的name列值,同时可以简化文件读取的写法(pandas.read_csv直接支持传入文件名,不需要手动open):

import pandas as pd  # 别忘了导入pandas,你的原代码遗漏了这行

examples = pd.read_csv("examples.csv")
for index, row in examples.iterrows():
    # 同时打印name、month、day列的预期值
    print(f"name: {row['name']}, month: {row['month']}, day: {row['day']}")

额外提示

如果列名和Series的内置属性不重名,用row.列名的点语法是可行的,但遇到像name这种冲突列名,必须用row['列名']的索引访问方式。另外,若仅需遍历特定列,推荐用itertuples(),性能比iterrows()更优,适合数据量大的场景:

import pandas as pd

examples = pd.read_csv("examples.csv")
# index=False表示不返回行索引
for row in examples[['name','month','day']].itertuples(index=False):
    print(f"name: {row.name}, month: {row.month}, day: {row.day}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:35:19