我有这样的字典:
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
如何做到这一点?帮助将不胜感激。提前谢谢!
答案 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