如何将equivalence file应用到DataFrame实现值替换?需编写Python函数
用等价规则替换DataFrame指定列的值
需求说明
我们需要将等价文件中定义的替换规则(原值→目标值)应用到主DataFrame的指定列,未匹配到规则的数值保持原样。
实现步骤
核心思路是把等价文件的规则转换成字典,再用pandas的replace()方法完成批量替换,既高效又简洁。
代码实现
首先导入pandas,创建示例数据(实际使用时可从文件读取,比如用pd.read_csv()):
import pandas as pd # 主DataFrame main_df = pd.DataFrame({ 'ColA': ['A', 'B', 'C'], 'ColB': ['1', '2', '3'] }) # 等价规则DataFrame(对应等价文件) equivalence_df = pd.DataFrame({ 'ini': ['1', '3'], 'fin': ['111', '333'] })
定义通用替换函数,支持自定义列名:
def apply_equivalence_rules(main_df, equivalence_df, target_col, ini_col='ini', fin_col='fin'): # 将等价规则转为键值对字典 replace_dict = equivalence_df.set_index(ini_col)[fin_col].to_dict() # 替换目标列,未匹配值保留原内容 main_df[target_col] = main_df[target_col].replace(replace_dict) return main_df
测试函数并查看结果:
# 对ColB列应用替换规则 processed_df = apply_equivalence_rules(main_df, equivalence_df, 'ColB') print(processed_df)
输出结果:
ColA ColB 0 A 111 1 B 2 2 C 333
注意事项
- 如果等价文件是CSV/Excel格式,直接用
pd.read_csv('equivalence.csv')或pd.read_excel('equivalence.xlsx')读取即可 - 确保主DF目标列与等价文件
ini列的数据类型一致(比如都是字符串或都是整数),否则会出现匹配失败的情况 - 函数默认返回修改后的新DataFrame,若想直接修改原数据,可去掉return语句,直接操作原DF
内容的提问来源于stack exchange,提问作者DANIEL GARCIA DE CACERES HERRA
相关产品推荐
相关产品推荐

