2017-01-31 29 views
1

私は次のようになりますパンダのデータフレームがありますようにPython Pandas:*正しい*重複行を削除する方法は?

ID, Customer, Status, Score, Size 
01, Cust-A, NaN,  100, A 
01, Cust-A, Valid, 100, A 
02, Cust-B, Invalid, 80, B 
02, Cust-B, Invalid, NaN, B 
03, Cust-C, Valid, 95, C 
04, Cust-D, Invalid, 76, NaN 
04, Cust-D, NaN,  76, NaN 
... 

とします。

正しい行を削除するにはどうすればよいですか?

ID-01の場合は最初の行を、ID-02の場合は2番目の行を削除したいと思います。ID-04の場合は最初の行を削除します以下のNaN

+0

一部のIDに同じ数の欠損値(または欠損値がない)がある場合はどうなりますか? – Psidom

+0

私はよく分かりませんが、その一般的な質問です。私がクリーニングしているデータセットでは、値を持つすべての条件はありません。私が見たことは、重複がある場合、1つ以上の欠損値を持つ行があり、同じ列に同じ値があることです。しかし、あなたのことは大きな質問です。 – luisfer

答えて

2

1つのオプションは、各IDの欠損値の合計数を計算する(idxmin()付き)最小欠損値のインデックスを抽出し、元のデータフレームをサブセットするためにインデックスを使用することである。

df.loc[df.groupby('ID', as_index=False).apply(lambda g: g.isnull().sum(axis=1).idxmin())] 

# ID Customer  Status Score Size 
#1 1  Cust-A  Valid 100.0  A 
#2 2  Cust-B Invalid 80.0  B 
#4 3  Cust-C  Valid 95.0  C 
#5 4  Cust-D Invalid 76.0 NaN 
+0

美しい!ありがとう!!! – luisfer

関連する問題