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

如何将值为列表的字典映射到DataFrame的col1并替换匹配值?

解决方法:将字典列表映射到DataFrame列并替换值

没问题,这个需求其实挺常见的,咱们一步步来实现:

首先得把你的字典反转结构——原字典是「键对应列表」,但我们需要的是「列表里的每个元素对应原键」的映射关系,这样才能快速匹配DataFrame里的值。

举个具体的例子

假设你的字典和初始DataFrame是这样的:

import pandas as pd

# 你的原字典(键对应列表)
category_dict = {
    "电子产品": ["手机", "电脑", "耳机"],
    "生活用品": ["毛巾", "牙刷", "杯子"]
}

# 需要处理的DataFrame
df = pd.DataFrame({
    "col1": ["手机", "牙刷", "耳机", "键盘", "杯子"]
})

第一步:创建反转映射字典

把原字典里的每个列表元素都对应到它所属的键:

# 构建元素到键的映射
reverse_mapping = {}
for category, items in category_dict.items():
    for item in items:
        reverse_mapping[item] = category

第二步:替换DataFrame中的值

用replace()或者map()方法完成替换,两种方式都好用:

# 方法1:使用replace(简洁直观)
df["col1"] = df["col1"].replace(reverse_mapping)

# 方法2:使用map + fillna(适合需要保留未匹配值的场景)
df["col1"] = df["col1"].map(reverse_mapping).fillna(df["col1"])

处理后的结果会是这样:

col1
0    电子产品
1    生活用品
2    电子产品
3      键盘  # 不在字典列表里的值会保留原内容
4    生活用品

额外小技巧

  • 如果想把未匹配到的值统一替换成默认内容(比如「其他类别」),可以把fillna()改成fillna("其他类别")
  • 这种字典映射的方式效率很高,哪怕你的字典和DataFrame数据量很大,也能快速完成替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:18:36