通过将值从字典映射到现有列来在数据框中创建新列

时间:2018-06-13 16:58:39

标签: python pandas dictionary data-structures

我有这样的字典:

dictionary = {100:[1, 2], 110:[3, 4], 
               120:[5, 6, 7], 130:[8, 9], 
               140:[10, 11, 12, 13], 
               150:[14, 15]}

我已经有一个现有的列'A',并希望创建一个新列'B'并将值映射回每个键,但以数据帧格式显示。这是我希望收到的输出:

 #Column A is the existing column. Column B is the new one to be created
    A     B 
    4     110
    8     130
    15    150
    7     120
    7     120
    4     110
    9     130
    1     100
    2     100

如何做到这一点?帮助将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:4)

通过理解来反转你的字典。然后将pd.Series.map与新词典一起使用:

d = {100:[1, 2], 110:[3, 4], 120:[5, 6, 7], 130:[8, 9], 
     140:[10, 11, 12, 13], 150:[14, 15]}

d_rev = {w: k for k, v in d.items() for w in v}

df['B'] = df['A'].map(d_rev)

print(df)

    A    B
0   4  110
1   8  130
2  15  150
3   7  120
4   7  120
5   4  110
6   9  130
7   1  100
8   2  100