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

如何在DataFrame迭代中修改行值并持久化更改结果

解决DataFrame迭代修改无法持久化的问题

问题原因

使用iterrows()迭代DataFrame时,每次循环拿到的r是原数据行的副本,而非对原DataFrame的引用,所以修改r的内容不会同步到原数据中。

可行解决方案

  • 通过loc直接修改原DataFrame
    在迭代时,利用行索引i,通过df.loc定位到原数据的对应位置赋值:

    for i, r in df.iterrows():
        df.loc[i, 'population'] = r['population'] * 2
    
  • 使用apply方法批量处理
    用apply按行执行逻辑,直接生成新列值覆盖原列:

    df['population'] = df.apply(lambda row: row['population'] * 2, axis=1)
    
  • 用itertuples替代iterrows(更高效)
    itertuples返回命名元组,通过元组的Index属性获取行索引,再修改原数据:

    for row in df.itertuples():
        df.loc[row.Index, 'population'] = row.population * 2
    
  • 优先使用向量化操作(pandas推荐)
    迭代行在数据量大时效率极低,pandas原生支持整列的向量化运算,这是最优方案:

    # 两种写法效果一致
    df['population'] *= 2
    # 或者
    df['population'] = df['population'] * 2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:35:45