使用 pandas 在数据帧之间进行值查找?

Doing value lookups between dataframes with pandas?

我有一个包含用户及其两个主要特征的数据框

df_a:

我有第二个数据框,其中包含这些功能的实际值

df_b:

我正在尝试从 df_b 中查找实际值,使用 df_a 中给定的顶级特征,得到如下内容:

df_c

我目前正在使用 for 循环执行此查找,但速度很慢...希望有更合适的方法。谢谢

这样的东西对你有用:

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