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

Pandas中按条件修改行值的for-loop运行正常但DataFrame未更新如何解决

问题原因
  • df.iterrows() 迭代返回的每一行是Series类型的副本,并不是原DataFrame的视图,你对这个副本做的任何修改都不会同步到原始的DataFrame中。
  • 你的代码仅执行了i[i==10].sample(2, axis=0)+100的计算操作,并没有把计算后的结果赋值回原数据的对应位置,仅打印了计算后的临时结果。
修复方案

直接通过df.loc定位到原始DataFrame的对应行、选中的列,直接赋值修改即可,参考代码如下:

for index, row in df.iterrows():
    if row['F'] == 2:
        # 取出当前行值为10的列,随机选2个,获取对应的列名
        selected_cols = row[row == 10].sample(2, axis=0).index
        # 对原DataFrame的指定位置赋值,加100
        df.loc[index, selected_cols] += 100

运行上述代码后再打印df,就会得到你预期的修改结果。

补充说明

如果你的数据量较大,不推荐使用iterrows遍历,可以用pandas向量化操作优化性能,小数据集下上述写法可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:02