2017-03-01 8 views
3

私は、比較的単純な解決方法があると私は望んでいる問題があります。一意の連絡先ごとに複数のレコードを持つデータフレームがあります(下記の「名前」を参照)。私は、GroupByに名前を付けて、値が失われているところでロールアップしようとしています。パンダ - 不足しているデータを埋めるために行を巻き返す

name id   email 
0 bob 5.0    NaN 
1 bob NaN  [email protected] 
2 bill 3.0    NaN 
3 bill NaN [email protected] 

予想される出力は次のようになります。

name id   email 
0 bob 5.0  [email protected] 
1 bill 3.0  [email protected] 

私が試したのピボットと無駄にいくつかの異なる方法を再ピボット。私はこれを行うことができる方法はありますか?

答えて

5

あなたはgroupby.first()を試すことができます。

df.groupby('name')[['id', 'email']].first() 

#  id   email 
#name  
#bill 3.0 [email protected] 
#bob 5.0 [email protected] 

あなたが興味を持っている場合にも、ここで(それによれば、それは最初の非null値をとる)source codeをご確認ください。

+3

df.groupby( 'name'、as_index = False).first() – Boud

+0

@Boudそれのシンプルさは、私がしようとしていたことがとてもばかげているように見えます。 – miradulo

+0

@Mitch hehe、私は過去にもffillの組み合わせを行ってきました(はい、私はあなたの心で読むことができます) – Boud

関連する問題