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

如何将Pandas DataFrame多列唯一值按指定参考列表统一替换

实现方法

核心思路是先提取全表(或指定列)的全局唯一值,与参考列表配对生成全局映射字典,再统一替换即可,天然保证同一个原始值的映射结果全局一致。

完整代码示例如下:

import pandas as pd

# 构造示例数据
data = {'col1': ["Bruce Wayne", "Clark Kent", "Peter Parker"], 
'col2': ["Alfred Pennyworth", "Bruce Wayne", "Clark Kent"]}
df = pd.DataFrame(data=data)
AlternativeNames = ["Batman", "Superman", "Spiderman", "Batman's butler"]

# 1. 提取所有列的全局唯一值,如需指定处理列,替换为 df[['col1','col2']] 即可
# 若需要固定映射顺序,可以手动调整该列表的元素顺序
all_unique_vals = pd.unique(df.values.flatten())
# 示例中要对齐期望输出,可以手动调整顺序为:
# all_unique_vals = ["Bruce Wayne", "Clark Kent", "Peter Parker", "Alfred Pennyworth"]

# 2. 生成全局映射字典
replace_map = dict(zip(all_unique_vals, AlternativeNames))

# 3. 全表统一替换
df = df.replace(replace_map)

print(df)

注意事项

  • 需保证参考列表AlternativeNames的长度≥全局唯一值的数量,否则会出现部分原始值无对应替换值的情况。
  • 你提到熟悉pd.factorize(),也可以用该方法配合索引取参考列表值实现替换,本质逻辑和上述方法一致,这里用映射字典的写法可读性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:45:02