Duplicated()找出重复项_找出所有重复项含本身
写简单些,就取3行数据
df_search.loc[:,['PCI','Longitude','Latitude']].duplicated(keep=False)
取出所有重复的项,那就简单了
df_search[df_search.loc[:,['PCI','Longitude','Latitude']].duplicated(keep=False)]
Drop_duplicates()找出重复项_找出第一个重复项含本身
思路
- 采用drop_duplicates对数据去两次重,一次将重复数据全部去除(keep=False)记为data1,另一次将重复数据保留一个(keep='first)记为data2;
- 求data1和data2的差集即可:data2.append(data1).drop_duplicates(keep=False)
使用df1 =df_search.drop_duplicates(['PCI','Longitude','Latitude'], keep=False)
将df1,df2合并后,再干掉数据中重复项,就找到了第一个重复项。
Drop_duplicates()找出重复项_找出最后一个重复项含本身
使用df1 =df_search.drop_duplicates(['PCI','Longitude','Latitude'], keep=False)
将df1,df2合并后,再干掉数据中重复项,就找到了最后一个重复项。
根据上面的理解,解决一个问题,即从一个表格中找到'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')
共享学习,希望对大家有帮助!