一个数据框中的一行出现在另一个数据框中的概率

probability of a row in one dataframe occurring in another dataframe

我有 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

使用 DataFrame.merge with indicator parameter and then check if both values with 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