如何查找并返回pandas DataFrame中指定列组合非唯一的对应行
解决方案
方案1:匹配你给出的预期输出(筛选同一个Name下存在多个不同Actor的所有行)
你给出的预期输出本质是保留存在多个不同演员的剧集对应的全部行,可通过分组统计唯一演员数量后过滤实现,不会丢失Seasons列:
# 统计每个剧集对应的不同演员数量 actor_cnt_per_name = df.groupby('Name')['Actor'].nunique() # 筛选出演员数大于1的剧集名称 valid_names = actor_cnt_per_name[actor_cnt_per_name > 1].index # 过滤原表得到结果 result_df = df[df['Name'].isin(valid_names)]
输出结果:
Name Seasons Actor 0 Stranger Things 3 Millie 4 Stranger Things 3 Todd
方案2:若你实际需要的是Name+Actor组合重复出现的所有行
如果你需求是筛选出Name和Actor的组合本身不唯一(重复出现)的行,可使用duplicated方法实现:
# 标记所有Name+Actor重复的行,keep=False表示所有重复项都标记为True dup_mask = df.duplicated(subset=['Name', 'Actor'], keep=False) result_df = df[dup_mask]
该场景输出结果:
Name Seasons Actor 2 La Casa De Papel 4 Sergio 5 La Casa De Papel 4 Sergio
内容的提问来源于stack exchange,提问作者SquatLicense
相关产品推荐
相关产品推荐

