如何使用参考字典填充pandas DataFrame中Brand_Name列的NaN值
Pandas 多品牌ID映射填充空品牌名解决方案
首先确认你的参考映射字典格式为brand_map = {品牌ID字符串: 品牌名称},按以下步骤操作即可:
1. 定义ID转名称处理函数
作用是将单条或逗号分隔的多个品牌ID,转换为对应逗号分隔的品牌名称:
def brand_id_to_name(brand_ids): # 按逗号拆分ID,逐个匹配字典,strip()用于处理ID前后可能存在的空格 name_list = [brand_map.get(_id.strip(), _id.strip()) for _id in brand_ids.split(',')] return ','.join(name_list)
若需要对匹配不到的ID统一显示指定值,可将上述代码的第二个
_id.strip()替换为自定义值,比如'未知品牌'
2. 仅填充Brand_Name为空的行
该操作不会覆盖原有已存在的品牌名称:
import pandas as pd dfp.loc[dfp['Brand_Name'].isna(), 'Brand_Name'] = dfp.loc[ dfp['Brand_Name'].isna(), 'Brand_ID' ].apply(brand_id_to_name)
效果示例
处理前dfp样例:
| Brand_ID | Brand_Name | Product_ID |
|---|---|---|
| B001 | 华为 | P001 |
| B002,B003 | NaN | P002 |
| B004 | 苹果 | P003 |
| B001,B004 | NaN | P004 |
处理后dfp样例:
| Brand_ID | Brand_Name | Product_ID |
|---|---|---|
| B001 | 华为 | P001 |
| B002,B003 | 小米,OPPO | P002 |
| B004 | 苹果 | P003 |
| B001,B004 | 华为,苹果 | P004 |
内容的提问来源于stack exchange,提问作者AmanArora
相关产品推荐
相关产品推荐

