Pandas基于类似的键划分两个数据帧

时间:2018-04-09 07:37:15

标签: python pandas

假设我的df值为:

user_id  sub_id   score
39       16       1
39       4        1
40       1        3
40       2        3
40       3        3

user_id score
39      2
40      30

所以我想根据键 user_id 来划分列,这样我的结果应该是:

user_id  sub_id   score
39       16       0.5
39       4        0.5
40       1        0.1
40       2        0.1
40       3        0.1

我已经尝试了 div 操作,但它根据我的需要无法正常工作,它只是划分了第一个外观,并为我提供了 NAN

是否有任何直接的熊猫操作或我是否需要将两个df分组然后进行分割? 谢谢

1 个答案:

答案 0 :(得分:1)

我认为div创建的Series需要除以map

df1['score'] = df1['score'].div(df1['user_id'].map(df2.set_index('user_id')['score']))
print (df1)
   user_id  sub_id  score
0       39      16    0.5
1       39       4    0.5
2       40       1    0.1
3       40       2    0.1
4       40       3    0.1

<强>详细

print (df1['user_id'].map(df2.set_index('user_id')['score']))
0     2
1     2
2    30
3    30
4    30
Name: user_id, dtype: int64