pandas选择数据框中的重复值

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)




 

    原文作者:山大王110
    原文地址: https://blog.csdn.net/u013155359/article/details/109221098
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞