Python中筛选重复手机号且对应状态列值不一致的条目
Python中筛选重复手机号且对应状态列值不一致的条目
嗨,我明白你的需求了——你要从CSV里找出那些重复的手机号,而且这些手机号对应的状态列(Col2)值还不一致的条目对吧?我给你整理了两种实用的解决方法,你可以根据自己的需求选:
方法一:先定位有冲突的手机号,再提取对应行
这种方法会先找出所有存在状态矛盾的手机号,再从原数据里把这些号码的所有相关行提取出来,适合你需要单独拿到问题手机号列表的场景:
import pandas as pd # 读取CSV文件 df = pd.read_csv("Example_File") # 按手机号分组,筛选出Col2值不止一种的手机号 conflicting_numbers = df.groupby("Col 1")["Col2"].nunique()[lambda x: x > 1].index # 从原数据中提取这些手机号对应的所有行 result = df[df["Col 1"].isin(conflicting_numbers)] # 输出结果 print("存在状态冲突的手机号列表:", conflicting_numbers.tolist()) print("\n对应的所有条目:") print(result)
方法二:一步到位标记并筛选
如果你想直接给每行数据标记是否属于冲突组,后续还能灵活处理的话,可以用transform方法一步完成:
import pandas as pd df = pd.read_csv("Example_File") # 给每行添加一个标记:该手机号的Col2是否存在多种不同值 df["has_conflict"] = df.groupby("Col 1")["Col2"].transform(lambda x: x.nunique() > 1) # 筛选出所有存在冲突的行 result = df[df["has_conflict"]] print(result)
拿你给出的示例数据测试的话,两种方法都会返回555-123-4567对应的两行数据,完全符合你的需求~
备注:内容来源于stack exchange,提问作者Bcpeagle
相关产品推荐
相关产品推荐

