我有两个数据框。 (这些都是简单的例子,我的真实数据有近 3,000 行)
>df
player position nation Mins
Messi FW ARG 3302
Ronaldo FW POR 3029
Van Dijk DF NED 500
Mane FW SEN 3088
Alena MF SPA 1592
>df2
player position
Alena CM
Ronaldo ST
Mane LW
Van Dijk CB
Messi ST
我想要做的是用 df
.matching df2
列中的位置数据替换 player
中的位置数据。
我已尝试对两个列的 player
列的值进行排序,然后仅使用 df['pos2']=df2['position']
但它最终在结果列的某些区域略有错误。 这就是为什么我希望根据匹配列来做这件事。
答案 0 :(得分:1)
根据 player
列合并您的数据框:
>>> df1.drop(columns='position').merge(df2, on='player')
player nation Mins position
0 Messi ARG 3302 ST
1 Ronaldo POR 3029 ST
2 Van Dijk NED 500 CB
3 Mane SEN 3088 LW
4 Alena SPA 1592 CM
也许您想保留历史记录:
>>> df1.merge(df2, on='player', suffixes=('_old', '_new'))
player position_old nation Mins position_new
0 Messi FW ARG 3302 ST
1 Ronaldo FW POR 3029 ST
2 Van Dijk DF NED 500 CB
3 Mane FW SEN 3088 LW
4 Alena MF SPA 1592 CM