首页 > 解决方案 > 熊猫:从匹配第一个元素的元组列表中创建列

问题描述

我有一个示例数据框,例如:

          cid             pos 
0         11              29      
1         22              29      
2         22              29      
3         33              29   
4         44              29  

现在是一个元组列表,如:

[(11, 3), (22, 1), (33, 4), (44, 4), (55, 7), (66, 2)]

我想从元组列表(第二个元素)中创建另一列。仅当 df 列中的第一个元素匹配时cid

喜欢:

          cid             pos     new_pos
0         11              29      3
1         22              29      1
2         22              29      1
3         33              29      4
4         44              29      4

熊猫初学者,任何帮助都会很棒!谢谢你

标签: pythonpandas

解决方案


您可以将元组列表转换为字典并在其map上使用:

b = [(11, 3), (22, 1), (33, 4), (44, 4), (55, 7), (66, 2)]
df["b"] = df["cid"].map(dict(b))

print(df)
   cid  pos  b
0   11   29  3
1   22   29  1
2   22   29  1
3   33   29  4
4   44   29  4

推荐阅读