pandas dataframe找重复记录
pandas提供了现成的方法找重复记录
df.duplicated(subset = 字段list,keep = False),这个是返回一个bool型的series,用True标明哪些是重复项,第二参数有{'first','last',False},first除了第一个重复项,其他都是False,last除了最后一个重复项是False,其他都是True,参数值False则把所以重复项都标记成True。
例如train_df[train_df.duplicated(['ip','app','device','os','channel','click_time'],False) == True]
再用True筛选一下就可以获得所有的重复项。
找某几个字段重复的,但是某一个字段有不同值的所有记录
可以直接series1 = df.groupby(['A','B','C'])['D'].nunique(),ABC三者都相同但D不同的记录 nunique()就会大于1,df2 = series1[series1 > 1].reset_index()[['A','B','C']],这个时候df2就是满足条件的记录集合,然后要如何在原有df筛选出来呢?我用的方法是,循环逐条筛选,哎呀,我好傻,直接merge不就出来了,大表去merge小表。
df.duplicated(subset = 字段list,keep = False),这个是返回一个bool型的series,用True标明哪些是重复项,第二参数有{'first','last',False},first除了第一个重复项,其他都是False,last除了最后一个重复项是False,其他都是True,参数值False则把所以重复项都标记成True。
例如train_df[train_df.duplicated(['ip','app','device','os','channel','click_time'],False) == True]
再用True筛选一下就可以获得所有的重复项。
找某几个字段重复的,但是某一个字段有不同值的所有记录
可以直接series1 = df.groupby(['A','B','C'])['D'].nunique(),ABC三者都相同但D不同的记录 nunique()就会大于1,df2 = series1[series1 > 1].reset_index()[['A','B','C']],这个时候df2就是满足条件的记录集合,然后要如何在原有df筛选出来呢?我用的方法是,循环逐条筛选,哎呀,我好傻,直接merge不就出来了,大表去merge小表。
留言
張貼留言