2016-04-03 101 views
1

我想刪除相對於列的重複行並根據特定條件重新排列數據幀中的數據。例如,我有以下數據幀:熊貓 - 根據列刪除重複的行

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'列將數據分組在'FROM'列中,並基於該列進行重新排列。我嘗試在熊貓中使用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

是否有在兩個連續行之間添加空格的pythonic方法。我可以通過構建一個新的dataFrame並迭代原始dataFrame的行並逐個添加。我想知道是否還有其他辦法。 – johndaniel

+0

不是。熊貓關於數據,而不是演示文稿。可能有一些html/css顯示選項可用,但我不熟悉它們。 – Alexander