这样的事情将为你工作:
df_c = (df_a.melt('UID', value_name='variable', var_name='feat')
.merge(df_b.melt('UID'), on=('UID','variable'))
.pivot(index='UID',columns='feat')
)
输出:
variable value
feat 2nd_feature top_feature 2nd_feature top_feature
UID
123 feat2 feat3 0.720324 0.000114
124 feat3 feat1 0.092339 0.302333
125 feat2 feat1 0.345561 0.186260
126 feat2 feat3 0.419195 0.685220
或手动一些lookup
:
df_b = df_b.set_index('UID')
for col in ['top_feature', '2nd_feature']:
df_a[f'{col}_value'] = df_b.lookup(df_a['UID'], df_a[col])
所以你修改df_a
为:
UID top_feature 2nd_feature top_feature_value 2nd_feature_value
0 123 feat3 feat2 0.000114 0.720324
1 124 feat1 feat3 0.302333 0.092339
2 125 feat1 feat2 0.186260 0.345561
3 126 feat3 feat2 0.685220 0.419195