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

如何在满足指定条件时替换Pandas DataFrame中原数据的指定值?

直接在原DataFrame中替换指定条件的数值

方法一:使用.loc结合replace(原地修改)

利用.loc精准定位符合条件的行和PC_DK列,通过replace实现原地修改,直接作用于原DataFrame:

import numpy as np

# 定位目标行和列,原地替换NaN与1为88
df2.loc[condition, 'PC_DK'].replace({np.nan: 88, 1: 88}, inplace=True)

也可以写成赋值形式,效果完全一致:

df2.loc[condition, 'PC_DK'] = df2.loc[condition, 'PC_DK'].replace({np.nan: 88, 1: 88})

方法二:直接筛选赋值

先组合出更精准的目标条件(原条件 + PC_DK为NaN或1),再直接赋值:

# 组合目标条件:满足原筛选规则,且PC_DK是NaN或1
target_condition = condition & (df2['PC_DK'].isna() | (df2['PC_DK'] == 1))
# 原地修改数值
df2.loc[target_condition, 'PC_DK'] = 88

为什么之前的方法无法修改原DataFrame?

你之前用df2[condition]['PC_DK']属于链式索引(先取行子集再取列),pandas在这种场景下返回的通常是原DataFrame的副本而非视图,因此对df_condition的修改只会作用于副本,不会同步到原df2。而.loc是pandas推荐的索引方式,能确保操作直接作用于原DataFrame的视图,实现原地修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 02:26:19