首页 > 解决方案 > 具有多个值的 Pandas/Python Map 字典键

问题描述

我想知道如何将字典键映射到多个字典项。我已经尝试了以下,但是输出不是预期的。

d = {'col1': ['type 2','type 3', 'type 4', 'type 5', 'type 6', 'type 6']}
df = pd.DataFrame(data=d)

dict = {
    'a' :['type 2', 'type 3'],
    'b' : ['type 4', 'type 5'],
    'c': ['types 6', 'types 7']
}

for k, v in df.items():
    df['col1'].map({k: v})
    print(df)

预期输出: 在此处输入图像描述

标签: pythonpandasdictionary

解决方案


您可能必须转换您的字典,以便键是值,反之亦然。

dd = {
    'a' :['type 2', 'type 3'],
    'b' : ['type 4', 'type 5'],
    'c': ['type 6', 'type 7']
}
ddd = {l:v for v,k in dd.items() for l in k}
print(ddd)

出去:

{'type 2': 'a',
 'type 3': 'a',
 'type 4': 'b',
 'type 5': 'b',
 'type 6': 'c',
 'type 7': 'c'}

现在您可以轻松地映射它。

df.col1.map(ddd)

出去:

0    a
1    a
2    b
3    b
4    c
5    c
Name: col1, dtype: object

推荐阅读