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

如何基于指定值列表批量替换Pandas DataFrame各列的匹配值

实现方案

核心思路

直接利用pandas内置的替换方法适配按列独立匹配的需求,两种实现方式可选:批量替换写法简洁高效,逐列循环写法便于调试排查。

代码实现

首先导入依赖库:

import pandas as pd
import numpy as np

你给出的查找值列表参考:

lookup_values_per_column = [[-99999], [9999], [99, 98],[9],[99],[996, 997, 998, 999]]

方法1:批量替换(推荐,性能更高)

直接构造列维度的替换映射,一次调用完成所有列的替换:

# 构造替换规则字典,键为列名,值为{待匹配值: 替换目标}的映射
replace_rule = {}
for col_order, lookup_vals in enumerate(lookup_values_per_column):
    # 按顺序取对应的列名,lookup_values_per_column第0项对应DataFrame第1列
    col_name = df.columns[col_order]
    replace_rule[col_name] = {val: pd.NA for val in lookup_vals}

# 执行替换,inplace=True表示直接修改原DataFrame,不需要重新赋值
df.replace(replace_rule, inplace=True)

方法2:逐列循环(便于调试)

如果需要中间打印匹配结果排查问题,可以用逐列判断的写法:

for col_order, lookup_vals in enumerate(lookup_values_per_column):
    col_name = df.columns[col_order]
    # 筛选当前列中属于查找列表的行,替换为NA
    df.loc[df[col_name].isin(lookup_vals), col_name] = pd.NA

注意事项

  • 如果你习惯使用numpy的空值而非pandas原生pd.NA,把代码中的pd.NA替换为np.nan即可
  • 替换后如果出现整数列自动转为float类型的问题,可在替换结束后执行df = df.convert_dtypes()转为pandas可空数值类型即可保留整数格式
  • 需保证lookup_values_per_column的元素顺序和你要处理的DataFrame列顺序完全对应

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:01