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

Pandas如何基于值为二元列表的字典映射列并拆分列表为独立列

解决方案

错误原因说明

  • 第一次尝试:构造的new_map映射逻辑完全相反,将字典值列表内的元素作为键、原键作为值,不符合需求;且未将map的计算结果赋值回DataFrame列,同时没有处理值列表拆分的逻辑,最终结果不符合预期。
  • 第二次尝试:使用DataFrame的索引值去匹配new_map的键,而new_map中不存在0、1这类索引键,直接触发KeyError。

正确实现

你要实现的需求可以直接通过map映射后拆分列表的方式完成,只需一行核心代码即可:

import pandas as pd

# 你的初始数据
mydf = pd.DataFrame({"x": [1, 2, 3, 4], "cat": ["text1", "text3", "text1", "text4"]})
mydict = {
    "text1": ["a15", "b3"],
    "text2": ["a6", "b1"],
    "text3": ["a3", "b3"],
    "text4": ["a1", "b12"],
}

# 核心实现:映射后拆分列表到两个新列
mydf[['left', 'right']] = mydf['cat'].map(mydict).tolist()

# 查看结果
print(mydf)

如果需要兼容可能存在的字典缺省值场景,也可以用apply配合pd.Series的写法:

mydf[['left', 'right']] = mydf['cat'].apply(lambda x: pd.Series(mydict.get(x, [pd.NA, pd.NA])))

最终输出结果

xcatleftright
1text1a15b3
2text3a3b3
3text1a15b3
4text4a1b12

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 11:21:03