2016-09-22 12 views
2

私はSubjectIDというインデックスとVisitというインデックスを持つDataFrameを持っています。被験者は、Value1Value2に対して複数の訪問数と整数値またはN/Aのいずれかを持っています。同じSubjectIDと同じVisitの行を折りたたみたい私はこのように見えるし、それにしたい同じ値と同じインデックスを持つPandasの行をマージする

SubjectID Visit Value1 Value2  
B1   1   1.57  N/A 
B1   1   N/A  1.75 
B1   2   N/A  1.56 

:ここ

は私のデータフレームである

Subject ID Visit  Value1 Value2 
B1   1   1.57  1.75 
B1   2   N/A  1.56 

私はこの問題を解決するためにgroupby()を使用しようとしていたが、私は方法がわからないんだけどインデックスとVisit列の値の両方を考慮に入れてください。

答えて

3

groupby.firstまたはgroupby.lastを使用すると、グループ内の各列の最初または最後の非NULL値を取得できます。例えば、データの場合、出力はどちらかの方法で同じようになります:

df = df.groupby(['SubjectID', 'Visit']).first().reset_index() 

結果の出力:

SubjectID Visit Value1 Value2 
0  B1  1 1.57 1.75 
1  B1  2  NaN 1.56 
+0

はどうもありがとう、これは素晴らしい仕事しました – MScar

関連する問題