2017-07-17 77 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

相關問題