我有一个用户及其朋友的数据框,如下所示:
user_id | friend_id
1 3
1 4
2 3
2 5
3 4
我想编写一个函数python
来计算每对的共同朋友的数量:
user_id | friend_id | num_mutual
1 3 1
1 4 1
2 3 0
2 5 0
3 4 1
目前我有:
def find_mutual(df):
num_mutual = []
for i in range(len(df)):
user, friend = df.loc[i, 'user_id'], df.loc[i, 'friend_id']
user_list = df[df.user_id == user].friend_id.tolist() + df[df.friend_id == user].user_id.tolist()
friend_list = df[df.user_id == friend].friend_id.tolist() + df[df.friend_id == friend].user_id.tolist()
mutual = len(list(set(user_list) & set(friend_list)))
num_mutual.append(mutual)
return num_mutual
它适用于小型数据集,但我在具有数百万行的数据集上运行它。运行一切需要很长时间。我知道这不是找到计数的理想方法。Python中有更好的算法吗?提前致谢!