2016-04-03 21 views
1

列に対して重複行を削除し、特定の条件に基づいてデータフレーム内のデータを並べ替える必要があります。たとえば、次のデータフレームがあります。Pandas-列に基づいて重複行を削除する

FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7 
63309 89  101.3 NA  NA  NA  NA  NA  NA 
63309 89  NA  102.3 NA  NA  NA  NA  NA 
63309 89  NA  NA  NA  104 NA  NA  NA 
63309 90  NA  NA  103 105.0 NA  NA  NA 
63309 89  NA  NA  NA  NA  NA  107.1 NA 
63310 92  NA  105.1 105.3 789.1 104 NA  NA 
63310 92  109 NA  NA  NA  NA  NA  NA 
63311 94  104 109 890 NA  NA  NA  107 
63309 89  NA  NA  NA  NA  109 NA  111 

最後に私の結果は次のようなものになります。

FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7 
63309 89  101.3 102.3 NA  104.0 109.0 107.1 111.0 

63309 90  NA  NA  103.0 105.0 NA  NA  NA 

63310 92  109.0 105.1 105.3 789.1 104.0 NA  NA 

63311 94  104.0 109.0 890.0 NA  NA NA 107.0 

データは、上記のように「CONT」列に基づいて、列及びそれに基づいて並び替え「から」にグループ化されなければなりません。私はパンダでgroupbyを使ってみましたが、必要な出力が得られませんでした。 'CONT'の後に列のデータが消去されました。

答えて

1
>>> df.groupby(['FROM', 'CONT']).sum() 
       ID1 ID2 ID3 ID4 ID5 ID6 ID7 
FROM CONT            
63309 89 101.3 102.3 NaN 104.0 109 107.1 111 
     90  NaN NaN 103.0 105.0 NaN NaN NaN 
63310 92 109.0 105.1 105.3 789.1 104 NaN NaN 
63311 94 104.0 109.0 890.0 NaN NaN NaN 107 

あなたはデータをインデックス化したくない場合は、次の

>>> df.groupby(['FROM', 'CONT'], as_index=False).sum() 
    FROM CONT ID1 ID2 ID3 ID4 ID5 ID6 ID7 
0 63309 89 101.3 102.3 NaN 104.0 109 107.1 111 
1 63309 90 NaN NaN 103.0 105.0 NaN NaN NaN 
2 63310 92 109.0 105.1 105.3 789.1 104 NaN NaN 
3 63311 94 104.0 109.0 890.0 NaN NaN NaN 107 
+0

おかげで、それが働きました。 – johndaniel

+0

2つの連続する行の間に空白を追加するという、無限の方法がありますか?新しいdataFrameを作成し、元のdataFrameの行を繰り返して1つずつ追加することで、これを行うことができます。別の方法があるのだろうかと思っていた。 – johndaniel

+0

本当にありません。パンダはデータであり、プレゼンテーションではありません。利用可能なhtml/css表示オプションがいくつかありますが、私はそれに精通していません。 – Alexander

関連する問題