Python Pandas groupby位于至少有一个公共元素的列表列表上

Python Pandas groupby位于至少有一个公共元素的列表列表上,python,pandas,list,dataframe,aggregate,Python,Pandas,List,Dataframe,Aggregate,我正在分析一个CSV文件,其名称对应于他们的手机号码列表 现在,我希望通过“电话号码”按此数据集分组,其中列表中至少有一个号码与其他号码匹配 例如,**如果ABC博士的电话号码为['1234'、'3456'、'7890'] 其中一个样本&ABC博士的电话号码为['7676'、'1234'、'8765'] 在其他示例中,这些行应聚合为“1234” 这很常见。尽管不匹配的行也应该保留 通过电话号码进行分组后,所需的输出是接收id列表。可以使用pandas groupby()完成吗?或者其他一些把戏。

我正在分析一个CSV文件,其名称对应于他们的手机号码列表

现在,我希望通过“电话号码”按此数据集分组,其中列表中至少有一个号码与其他号码匹配

例如,**如果ABC博士的电话号码为['1234'、'3456'、'7890'] 其中一个样本&ABC博士的电话号码为['7676'、'1234'、'8765'] 在其他示例中,这些行应聚合为“1234” 这很常见。尽管不匹配的行也应该保留


通过电话号码进行分组后,所需的输出是接收id列表。可以使用pandas groupby()完成吗?或者其他一些把戏。谢谢你的帮助

IIUC您可以使用
分解
复制

df = pd.DataFrame({"doctor_name":["Dr. ABC","Dr. ABC", "Dr. Who","Dr. Strange"],
                   "phone_number":[['1234','3456','7890'],['7676','1234','8765'], np.NaN, ["8697059406"]]})

df = df.explode("phone_number")

s = df["doctor_name"].value_counts()

print (df[df.duplicated("phone_number")|df["doctor_name"].isin(s[s.eq(1)].index)]) #add .groupby("doctor_name").agg(list) if you want them back into a list

   doctor_name phone_number
1      Dr. ABC         1234
2      Dr. Who          NaN
3  Dr. Strange   8697059406

谢谢你的帮助!!但是这个代码删除了Dr.Who和Dr.Strange。有没有办法保留这两个。我希望保留那些没有找到匹配项的行,并聚合那些有匹配项的行