我有两个数据框。 df1是主df,df2是参考数据帧。 df1看起来像这样:
u1d Status: Partisipant status Country:Country from URL
122 2 4
123 4 11
124 1 14
和df2看起来像是参考。
我希望在df1中将所有值映射为例如状态:参与者状态中的代码,因此它应映射为2(已终止)和所有其他列。我有大约2000列,所以我也需要有效的方法。
答案 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)