2017-07-17 46 views
0

我是Python和熊猫的新手。 我正在清洗50,000件设备(50,000行和10列)的数据文件。 单列('UNITNUMBER')应该对每条记录都是唯一的。但有重复,我试图产生两个数据框:一个包含UNITNUMBER唯一的所有记录,另一个包含UNITNUMBER在另一个记录中重复的所有记录。使用熊猫识别指定列中具有重复值的记录

以下产生一个系列,其中UNITNUMBER是索引,True表示重复,False表示唯一。 MData=pd.read_excel(MFile,MFileTab, skiprows=0) DupSeries=(MData.UNITNUMBER.value_counts()>1)

以下产生的系列中,每个设备的记录与原始DataFrame的顺序相同,索引是UNITMASTER值,系列值是True或False。 DupSeries[MROData['UNITNUMBER']]

我预计

MData[DupSeries[MData['UNITNUMBER']]] 

会产生所有在MDATA其中UNITNUMBER被复制的记录,而是我得到一个警告和一个错误:

UserWarning:布尔系列键将重建索引,以匹配DataFrame索引。

ValueError异常:不能从一个重复的重新索引轴线

总之,我不能找出的语法。请帮忙。如果有的话,我很乐意使用完全不同的方法。

回答

0
MDuplicates = MData.loc[MData.duplicated('UNITNUMBER', keep=False)] 
MUnique = MData.drop_duplicates('UNITNUMBER', keep='first') 
+0

MData.loc [DupSeries]不会出现work.IndexingError:作为索引(布尔系列指数和索引对象不匹配 – KevinC

+0

注有较少的记录比DupSeries布尔Unalignable系列MData,因为DupSeries只有一个记录用于重复的UNITNUMBER,而MData有多个记录用于重复的UNITNUMBER。 – KevinC

+0

MDuplicates = MData.duplicated('UNITNUMBER',keep = False)也不起作用,它只是返回一系列索引,行号),表明MData中的记录是否有重复的UNTNUMBER,我需要MData中的每个记录的所有列都有重复的UNITNUMBER – KevinC

相关问题