如何用Pandas基于不同列匹配指定用户的共同好友?
获取指定用户的共同好友解决方案
数据集示例
NAME FRIEND -------------- John Ella John Ben Ella John Ella Ben Dave Ben ... More Values
需求
提取John、Ella和Dave的共同好友列表,预期输出:['Ben']
问题重现
使用loc方法直接提取时,得到的是['Ella', 'Ben', 'John', 'Ben'],这是三人所有好友的合集,而非共同好友。
解决代码
假设你的数据存储在Pandas DataFramedf中,通过以下步骤实现:
# 分别提取每位用户的好友并去重 john_friends = set(df.loc[df['NAME'] == 'John', 'FRIEND'].unique()) ella_friends = set(df.loc[df['NAME'] == 'Ella', 'FRIEND'].unique()) dave_friends = set(df.loc[df['NAME'] == 'Dave', 'FRIEND'].unique()) # 计算三者的交集,得到共同好友 common_friends = list(john_friends.intersection(ella_friends, dave_friends)) print(common_friends) # 输出: ['Ben']
说明
- 用
set转换是因为集合天然支持交集运算,且自动去重 unique()确保每个好友只出现一次,避免重复干扰- 交集操作
&或intersection()会筛选出同时存在于三个好友列表中的用户
内容的提问来源于stack exchange,提问作者study.isLove
相关产品推荐
相关产品推荐

