我在熊猫中有3个数据帧:
UserItem是用户选择的用户和项目的数据框架,有两列,即User和Item
UserTag是一个包含用户和标记的数据框架,有两列,即用户和标记
ItemTag是项目和标记的数据框架,有两列,项目和标记
UserItem_df = pd.DataFrame({'user': ['A', 'B', 'B'] , 'item': ['i', 'j', 'k']})
UserTag_df = pd.DataFrame({'user': ['A', 'B'] , 'tag' : ['T', 'R']})
ItemTag_df = pd.DataFrame({'item': ['i', 'j', 'k', 'k'] , 'tag' : ['T', 'S', 'T', 'R']})
我想为UserItem中的每个(user,item)对计算该用户的标记与该项的标记的交叉点(以及并集!)的大小
Answer_df = pd.DataFrame({'user': ['A', 'B', 'B'] , 'item': ['i', 'j', 'k'], 'intersection': [1, 0, 1], 'union' : [1, 2, 2]})
最有效的方法是什么?这些数据帧有3000万行(UserItem_df
),另外两个数据帧大约有500万行。所有可能(用户、项目)对的乘积集大约为300亿-我不需要所有可能对的交集和并集,只需要UserItem数据框中的那些
使用:
步骤:
相关问题 更多 >
编程相关推荐