pandas选择数据框中的重复值

it2025-12-10  3

import pandas as pd ''' 根据name和info两个字段,找出重复的数据 ''' test_df=pd.DataFrame({'name':['张三','李四','王五','张三','李四','王五','张三'], 'level':[10,3,8,14,2,3,18], 'info':['吵闹','安静','中等','吵闹','安静','安静','吵闹'], 'change_times':[1,2,3,1,2,4,9] }) """方法一:利用groupby查看重复情况,然后进行merge操作.该方法可以查看具体重复的个数,还可以灵活更改重复次数来筛选数据。""" df1=test_df.groupby(["name","info"]).size() col=df1[df1>1].reset_index()[["name","info"]] #查看重复次数,灵活修改重复次数的筛选 df2 = pd.merge(col,test_df,on=["name","info"]) # print(df2) """方法二:先取出重复的字段,然后生成唯一的name列和info列,再进行merge。""" cols = ['name','info'] df1=test_df[test_df.duplicated(subset=cols)].drop_duplicates(cols)[cols] #test_df[test_df.duplicated(subset=cols)]为test_df为除了首次出现,其他重复项 # print(df1) df2 = pd.merge(df1,test_df,on=cols) # print(df2) """方法三:获取重复索引,然后取交集,然后筛选出来。该方法保留了原来的索引,缺点是数据原索引不能有重复。""" print(test_df) index1=test_df[test_df[["name","info"]].duplicated(keep="last")].index index2=test_df[test_df[["name","info"]].duplicated(keep="first")].index df2 = test_df.loc[index1 | index2,:] # print(df2)

 

最新回复(0)