最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项

Duplicated()找出重复项_找出所有重复项含本身

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第1张图片

写简单些,就取3行数据

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第2张图片

 

df_search.loc[:,['PCI','Longitude','Latitude']].duplicated(keep=False)

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第3张图片

取出所有重复的项,那就简单了

df_search[df_search.loc[:,['PCI','Longitude','Latitude']].duplicated(keep=False)]

 

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第4张图片

Drop_duplicates()找出重复项_找出第一个重复项含本身

 

思路

  1. 采用drop_duplicates对数据去两次重,一次将重复数据全部去除(keep=False)记为data1,另一次将重复数据保留一个(keep='first)记为data2;
  2. 求data1和data2的差集即可:data2.append(data1).drop_duplicates(keep=False)

使用df1  =df_search.drop_duplicates(['PCI','Longitude','Latitude'], keep=False)

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第5张图片  

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第6张图片

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第7张图片

df1df2合并后,再干掉数据中重复项,就找到了第一个重复项。

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第8张图片

 

Drop_duplicates()找出重复项_找出最后一个重复项含本身

使用df1  =df_search.drop_duplicates(['PCI','Longitude','Latitude'], keep=False)

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第9张图片

 

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第10张图片

df1df2合并后,再干掉数据中重复项,就找到了最后一个重复项。

最细总结_Duplicated()找到(所有)重复项 / / Drop_duplicates()找出每组(第一个)重复项 / /找出每组(最后一个)重复项_第11张图片

 

 

根据上面的理解,解决一个问题,即从一个表格中找到'PCI','Longitude','Latitude'列,都重复的数据,把它们提取出来。

import pandas as pd
class Find_dup(object):
    def __init__(self,input_dir,in_filename):

        filename = r"%s\%s " % (input_dir,in_filename)
        self.df = pd.read_excel(filename)

        self.df.index += 1

    def find_dup_item(self):
        df_useful = self.df.loc[:,['PCI','Longitude','Latitude']]
        df_useful['mod_pci']=df_useful.loc[:,['PCI']]%3
        df_duplicate_item=df_useful[df_useful.loc[:,['mod_pci','Longitude','Latitude']].duplicated(keep=False)]
        return df_duplicate_item

    def save_csv(self,output_dir,filename):
        self.find_dup_item().to_csv(r"%s\%s " % (output_dir,filename), encoding='utf-8')
        return print("已将重复项保存至 目录:%s 文件为:%s的文件,请查看!" % (output_dir,filename))

task = Find_dup('e:\lihao','lihao_info.xlsx')
task.save_csv('e:\lihao','output.csv')

共享学习,希望对大家有帮助!

你可能感兴趣的:(Python,pandas,pandas,去重)