

新闻资讯
技术学院本文介绍两种简洁高效的方法,使用列名列表批量对 pandas dataframe 的子集列(如 col1、col2)应用字典映射,避免重复书写键名或链式调用 replace,兼顾可读性与性能。
在
Pandas 中,当需要仅对部分列(而非整张表)应用字典映射(如将 'PHX' → 'PHO'、'BKN' → 'NJN')时,直接使用 df.replace(name_dict) 会作用于所有列,而显式写出 {'col1': name_dict, 'col2': name_dict} 又显得冗余。幸运的是,有更优雅的解决方案。
利用 Python 内置的 dict.fromkeys(keys, value),可快速生成以多列为键、同一映射字典为值的结构:
name_dict = {'PHX': 'PHO', 'BKN': 'NJN'}
cols_to_map = ['col1', 'col2']
df = df.replace(dict.fromkeys(cols_to_map, name_dict))该写法等价于 {'col1': name_dict, 'col2': name_dict},但无需重复输入 name_dict,语义清晰且一行完成。
先通过列名列表选取子 DataFrame,再对其整体调用 replace(),并赋值回原位置:
cols_to_map = ['col1', 'col2'] df[cols_to_map] = df[cols_to_map].replace(name_dict)
此方式优势明显:
⚠️ 注意事项:
综上,dict.fromkeys() 适合简洁表达,而列切片赋值更适合生产环境中的可控性和可维护性。两者均显著优于手动重复键名或链式 replace()。