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

Pandas DataFrame单行返回元组且异常的原因及解决办法

解决Pandas iterrows()遍历后无法按索引取值的问题

你对iterrows()的返回值理解有误——它返回的每个元素是**(行索引, 行数据Series)**的元组,不是仅包含行值的元组。你看到的“包含列名且无值分隔”是打印Series时的默认显示形式,并非元组本身的结构问题。

正确使用iterrows()的方式

遍历过程中,第二个元素row是Series类型,可以直接按列名或位置索引取值:

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'i': [1, 2],
    'function': ['父亲', '母亲'],
    'name': ['张三', '李四'],
    'ident': ['ID001', 'ID002'],
    'info': ['中年男性', '中年女性']
})

for idx, row in df.iterrows():
    # 按列名取值
    print(row['name'])
    # 按位置索引取值(对应列的顺序)
    print(row[2])

更高效的遍历替代:itertuples()

如果偏好类似元组的结构,可以用itertuples(),它返回命名元组(namedtuple),既支持按列名属性取值,也支持按索引取值,性能比iterrows()更高:

for row in df.itertuples(index=False):  # index=False 不返回行索引
    # 按列名属性取值
    print(row.name)
    # 按索引取值
    print(row[2])

关于写入Excel的建议

完全不需要遍历每行再写入!Pandas直接提供to_excel()方法可以快速将整个DataFrame写入Excel:

# 写入Excel,index=False 不导出行索引
df.to_excel('家庭关系数据.xlsx', index=False)

如果需要先处理部分行数据,建议将处理后的结果整理成新的DataFrame,再调用to_excel(),这比逐行写入效率高得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:39:49