如何将Pandas DataFrame指定列中匹配列表的数值替换为指定值
Pandas DataFrame指定列匹配列表值批量替换方案
需求说明
将DataFrame中C列的所有值,若存在于int_cells列表中则统一替换为数值100,无需手动写for循环实现,Pandas原生矢量化操作效率更高、代码更简洁。
示例基础代码
import pandas as pd df = pd.DataFrame({'A': [0, 1, 2, 3, 4, 2, 5, 8, 0, 1], 'B': [5, 6, 7, 8, 9, 4, 5, 2, 6, 7], 'C': [3, 5, 72, 74, 8, 3, 53, 21, 2, 36]}) int_cells = [72, 74, 8, 3, 53]
可行实现方法
方法1:使用loc索引定位(最推荐)
通过isin()方法生成布尔掩码,直接定位符合条件的行赋值:
df.loc[df['C'].isin(int_cells), 'C'] = 100
方法2:使用where条件替换
where方法保留满足条件的原值,不满足条件的替换为指定值:
# ~ 是布尔值取反运算符 df['C'] = df['C'].where(~df['C'].isin(int_cells), 100)
方法3:使用replace批量映射替换
将待替换的值和目标值生成映射字典,直接批量替换:
# dict.fromkeys 快速生成 {72:100,74:100,...} 格式的映射字典 df['C'] = df['C'].replace(dict.fromkeys(int_cells, 100))
运行结果
替换完成后df的C列值为:[100, 5, 100, 100, 100, 100, 100, 21, 2, 36]
内容的提问来源于stack exchange,提问作者emma_kth
相关产品推荐
相关产品推荐

