【发布时间】:2021-10-14 12:31:58
【问题描述】:
我正在尝试根据字典中的值对映射或替换 Pandas 数据框中的值。值对在一个列表中,我想将这些项目拆分为它们自己的列。值对列表中始终只有两项。
独立示例
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"],
}
display(mydf)
想要的结果
努力
基于a similar question here,我尝试了以下方法:
new_map = {str(x): str(k) for k, v in mydict.items() for x in v}
mydf['left'] = mydf['cat']
mydf['left'].map(new_map)
这不起作用,它会返回:
我还尝试了以下方法 (based on this):
new_map = {str(x): str(k) for k, v in mydict.items() for x in v}
mydf['left'] = mydf.index.map(lambda x: new_map[x])
导致错误KeyError: 0
【问题讨论】:
标签: python pandas dictionary