如何基于col_1与col_3多列筛选Pandas DataFrame重复行?
解决基于指定列筛选重复行的问题
你遇到的问题是因为默认的duplicated()方法会检查整行所有列的重复情况,而你需要的是仅基于col_1和col_3两列的组合来判断重复。那两行的col_2值不同,所以整行不算重复,自然不会被筛选出来。
正确的解决方案
只需要在duplicated()中通过subset参数指定要检查的列即可,配合keep=False保留所有重复出现的行:
import pandas as pd # 重现你的DataFrame df = pd.DataFrame({ 'col_1':['cust_a','cust_b','cust_c','cust_d','cust_e','cust_a'], 'col_2':['prod_a','prod_b','prod_b','prod_a','prod_a','prod_b'], 'col_3':['cat_a','cat_b','cat_c','cat_d','cat_a','cat_a'] }) # 基于col_1和col_3筛选重复行 duplicate_rows = df[df.duplicated(subset=['col_1', 'col_3'], keep=False)] print(duplicate_rows)
输出结果
col_1 col_2 col_3 0 cust_a prod_a cat_a 5 cust_a prod_b cat_a
关键参数解释
subset=['col_1', 'col_3']:告诉Pandas只根据这两列的值来判断是否重复,忽略其他列的差异。keep=False:保留所有重复出现的行(如果设置为'first'会保留第一次出现的行,去掉后续重复;'last'则相反)。
这样就能精准筛选出你需要的cust_a和cat_a组合的所有重复行了。
内容的提问来源于stack exchange,提问作者scott martin
相关产品推荐
相关产品推荐

