如何根据第二个数据帧映射第一个数据帧中的值?

时间:2020-03-10 09:18:19

标签: python pandas dictionary mapping

我有两个数据框。 df1是主df,df2是参考数据帧。 df1看起来像这样:

u1d               Status: Partisipant status         Country:Country from URL
122                           2                                4    
123                           4                                11
124                           1                                14

和df2看起来像是参考。

enter image description here

我希望在df1中将所有值映射为例如状态:参与者状态中的代码,因此它应映射为2(已终止)和所有其他列。我有大约2000列,所以我也需要有效的方法。

1 个答案:

答案 0 :(得分:1)

可能的解决方案通过DataFrame.melt进行调整,通过DataFrame.merge添加新列,最后添加DataFrame.pivot

df = (df1.melt('u1d', var_name='Variable_name', value_name='Value Code')
         .merge(df2, how='left')
         .pivot('u1d','Variable_name','Value Name'))

另一个想法:

for c in df1.columns[1:]:
    s = df2[df2['Variable_name'].eq(c)].set_index('Value Code')['Value Name']
    df1[c] = df1[c].map(s)