python - 一个数据帧中的一行出现在另一个数据帧中的概率
问题描述
我有 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
withindicator
参数,然后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
推荐阅读
- c# - 如何为每个新打开的 Excel 文档添加新的 CustomTaskPane?
- html - HTML 登录和登录按钮不起作用
- c++ - 如何将函数指针传递给方法,以便可以在 Qt 的 connect() 中使用?
- python - Python - 最准确的时间、时区、日历库/模块
- angular - 如何在 e2e 中设置代理身份验证?
- python - 从熊猫数据框中永久删除行
- c++ - “使用命名空间”子句在什么范围内有效?
- c - 启用在 macbook 上编译 sdl 1.2 项目
- python - 如何将 csv 数据用作变量以将其应用于公式?
- angular - Ag-grid Angular firstDataRendered 不会触发