2016-04-26 11 views
1

Mergedという名前のという名前のPandasデータフレームがあります。Pandas.Dataframe.duplicated()に重複している行が含まれています

私はそうのように、このデータフレームから重複を取得するためにPandas.Dataframe.duplicated()メソッドを使用しています:結果も重複としてRegimentalNumberの欠損値を含んよう

In [16]: Merged[Merged.RegimentalNumber.duplicated() == True] 

しかし、それが見えます。

欠損値を重複として除外するために、duplicated()メソッドはフラグまたはパラメータを使用しますか?この方法ではAPI Documentationを見ましたが、このようなフラグは見つかりませんでした。

もちろん私は、単にこのように欠損値を除外することができます。

In [17]: duplicates = Merged[Merged.RegimentalNumber.duplicated() == True] 
In [18]: duplicates[duplicates.RegimentalNumber.notnull()] 

しかし、duplicated()方法も重複として欠損値が含まれていることを私に権利いないようです。よりシンプルでワンステップのソリューションはありますか?

+1

'duplicated'は' NaN'を 'False'として扱うべきですので、生データとコードを再現するコードを投稿する必要があります。 – EdChum

答えて

1

NULL値が無視されるように、df.dropna()を使用できます。例えば 、df['foo'].duplicated()インデックスdf.dropna().indexより大きくてもよいブールシリーズであることを

import numpy as np 
import pandas as pd 
df = pd.DataFrame({'foo': [1, np.nan, 1, 2, 3, 2, 3, np.nan, float('nan'), 
          np.nan, float('nan'), 'xyz']}) 

print(df.dropna().loc[df['foo'].duplicated()]) 

収率

foo 
2 1 
5 2 
6 3 

注意。ただし、df.dropna().locを使用して行を選択すると、ブール値のシリーズインデックスはdf.dropna().indexと一致するように再インデックスされ、NULL値が都合よく削除されます。

+0

これはうまくいきました。ありがとう! – lostsoul29

関連する問題