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
相关产品推荐
相关产品推荐

