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

Python Pandas用字典调用replace函数时如何添加自定义替换条件?

Pandas 带行级条件的列值替换实现

可以实现你要的逻辑,但df.replace()本身不直接支持行级条件判断,需要结合布尔索引筛选符合条件的行后再执行替换操作。

另外你示例中给出的df.replace('A': {0: 10, 3: 100})存在语法错误,正确的无条件全量替换A列值的写法为:

df.replace({'A': {0: 10, 3: 100}}, inplace=True)

带条件替换的实现代码

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({'A': [0, 1, 2, 3, 4],
                   'B': [5, 6, 7, 8, 9],
                   'C': ['a', 'b', 'c', 'd', 'e']})

# 1. 构造条件掩码:筛选B列取值小于8的行
mask = df['B'] < 8

# 2. 仅对符合条件的行的A列执行替换规则
df.loc[mask, 'A'] = df.loc[mask, 'A'].replace({0: 10, 3: 100})

执行结果

最终修改后的DataFrame如下:

ABC
105a
16b
27c
38d
49e

可以看到索引3的A列取值为3,但是因为对应B列取值为8不满足小于8的条件,所以没有被替换为100。

如果需要保留原始DataFrame不被修改,可以先拷贝副本再操作:

df_new = df.copy()
df_new.loc[mask, 'A'] = df_new.loc[mask, 'A'].replace({0: 10, 3: 100})

内容的提问来源于stack exchange,提问作者Max de Boer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:54:00