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

Pandas使用双参数for循环修改DataFrame列值不生效问题求解

问题原因

你遍历拿到的i和j都是DataFrame对应值的拷贝,修改临时变量j不会把结果写回原DataFrame,因此原数据不会发生变化。

推荐解法(向量化操作,性能最优)

直接用pandas原生的布尔索引按条件赋值,无需写for循环,处理效率远高于Python层级的循环:

# 先统一转换列数据类型
df['day_test'] = df['day_test'].astype(int)
df['Temp Column'] = df['Temp Column'].astype(int)

# 按规则替换负值
df.loc[(df['day_test'] == 2) & (df['Temp Column'] < 0), 'Temp Column'] = 2
df.loc[(df['day_test'] == 1) & (df['Temp Column'] < 0), 'Temp Column'] = 1

原有for循环修改方案

如果一定要使用循环实现,需要通过索引定位到DataFrame的对应位置直接赋值:

df['day_test'] = df['day_test'].astype(int)
df['Temp Column'] = df['Temp Column'].astype(int)

for idx in df.index:
    day_val = df.loc[idx, 'day_test']
    temp_val = df.loc[idx, 'Temp Column']
    if temp_val < 0:
        if day_val == 2:
            df.loc[idx, 'Temp Column'] = 2
        elif day_val == 1:
            df.loc[idx, 'Temp Column'] = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:51:02