2017-09-09 8 views
0

私は人々の情報を持つデータフレームを持っています。しかし、時にはこれらの人が繰り返して、いくつかの行が他の人と同じ人についてのより多くの情報を持っています。参照として列 '名前'を使用して重複を削除する方法がありますが、一番満たされた行のみを保持しますか?Python/Pandas - 最も完全な行を選択するdrop_duplicates

+1

サンプルデータと期待される出力を提供します。データ関連の質問のテキストだけの質問は合理的な質問ではありません。 – Zero

+0

私の回答は役に立ちましたか? – Dark

答えて

1

お持ちの場合はNaNに基づいて行を助けるかもしれない最初のものを保つ数えるとによってサブセット「名前」との重複を落とすのソート

df = pd.DataFrame([['a',np.nan,np.nan,'M'],['a',12,np.nan,'M'],['c',np.nan,np.nan,'M'],['d',np.nan,np.nan,'M']],columns=['Name','Age','Region','Gender']) 

のようなデータフレームすなわち

df['count'] = pd.isnull(df).sum(1) 
df= df.sort_values(['count']).drop_duplicates(subset=['Name'],keep='first').drop('count',1) 

出力:

前:

 
    Name Age Region Gender 
0 a NaN  NaN  M 
1 a 12.0  NaN  M 
2 c NaN  NaN  M 
3 d NaN  NaN  M 

後:

 
Name Age Region Gender 
1 a 12.0  NaN  M 
2 c NaN  NaN  M 
3 d NaN  NaN  M 
関連する問題