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

Python中如何将pandas字符串列值映射为字典键以统一数据格式

解决方法

核心思路:map() 仅支持一对一映射关系,你当前持有的是「标准值: 别名列表」的一对多字典,需要先转换为「别名: 标准值」的一对一反向映射,再处理逗号分隔的多值字段即可,整体是哈希查找逻辑,效率很高。

实现代码

import pandas as pd

# 你已有的原始字典和DataFrame
fruit_dict = {
  "Apple": ["Apple", "apple", "apple_cake"],
  "Watermelon": ["Watermelon", "water_melon"]
}

df = pd.DataFrame(
    {
        "ID": [1, 2],
        "name": [
            "apple, water_melon",
            "apple_cake, cherry"
        ],
    }
)

# 1. 构建反向映射字典
reverse_map = {alias: standard for standard, aliases in fruit_dict.items() for alias in aliases}

# 2. 处理name列:拆分单个值→映射→过滤无效值→重新拼接
df["name"] = df["name"].str.split(",\s*").apply(
    lambda val_list: ", ".join([reverse_map[val] for val in val_list if val in reverse_map])
)

# 可选:如果要把无匹配的空值替换为NaN
# df["name"] = df["name"].replace("", pd.NA)

运行后输出的df和你期望的结果完全一致:

ID               name
0   1  Apple, Watermelon
1   2              Apple

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:02