首页 > 解决方案 > 一个数据帧中的一行出现在另一个数据帧中的概率

问题描述

我有 2 个数据框

df 1(发送给用户的影片):

    UserID  Film 
    1       3
    2       41
    2       23
    2       53
    3       34
    5       6     

df 2(用户观看的电影 - df 1 的子集):

    UserID  Film 
    1       3
    2       41
    5       6     

我正在尝试在 df1 中创建一个列,这是用户观看电影的概率,就像这样

    UserID  Film  Probability
    1       3     1
    2       41    0.33
    2       23    0.33   
    2       53    0.33
    3       34    0
    5       6     1

标签: pythonpandasdataframedata-wrangling

解决方案


使用DataFrame.mergewithindicator参数,然后both使用概率检查值:GroupBy.transform mean

df = df1.merge(df2, indicator='Probability', how='left')

df['Probability'] = df['Probability'].eq('both').groupby(df['UserID']).transform('mean')
print (df)
  UserID  Film  Probability
0       1     3     1.000000
1       2    41     0.333333
2       2    23     0.333333
3       2    53     0.333333
4       3    34     0.000000
5       5     6     1.000000

推荐阅读