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

pandas使用iterrows修改VALOR_ID列报TypeError错误问题问询

报错根因

pd.DataFrame.iterrows()遍历返回的是(行索引, 行数据Series)的二元组,你直接把返回的元组当作行对象用字符串键取值,自然会触发类型错误。另外你原代码中读取文件存入的是patients变量,最后写文件调用的df未定义,也会触发后续报错。

修复代码

方案1:修正iterrows循环逻辑

注意:iterrows返回的行对象是副本,直接修改不会生效到原DataFrame,需要通过索引定位原表赋值:

import pandas as pd

# 你的随机字符串生成函数
def generate_cip():
    # 示例生成10位随机字母数字串,可替换为你自己的实现逻辑
    import random
    import string
    return ''.join(random.choices(string.ascii_letters + string.digits, k=10))

patients = pd.read_csv("partial.csv")

# 拆解iterrows返回的索引和行对象
for idx, _ in patients.iterrows():
    new_cip = generate_cip()
    # 按索引给原表对应行的VALOR_ID字段赋值
    patients.loc[idx, 'VALOR_ID'] = new_cip

patients.to_csv("partial-writer.csv", index=False)
print(patients)

方案2:更简洁的向量化写法(无需显式循环)

如果不需要用到行内其他字段的值生成随机串,直接用列表推导式赋值即可,性能比iterrows高很多:

import pandas as pd

def generate_cip():
    # 同上你的生成逻辑
    import random
    import string
    return ''.join(random.choices(string.ascii_letters + string.digits, k=10))

patients = pd.read_csv("partial.csv")
# 直接生成和行数一致的随机串列表赋值给目标列
patients['VALOR_ID'] = [generate_cip() for _ in range(len(patients))]

patients.to_csv("partial-writer.csv", index=False)
print(patients)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:15:02