2016-04-03 23 views
1

Ich möchte doppelte Zeilen in Bezug auf eine Spalte löschen und die Daten im Datenrahmen basierend auf den bestimmten Bedingungen neu anordnen. Zum Beispiel habe ich den folgenden Datenrahmen:Pandas - Entfernen von doppelten Zeilen basierend auf den Spalten

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 

Am Ende muss mein Ergebnis zu so etwas.

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 

Die Daten in ‚VON‘ Spalte ‚CONT‘ Spalte basiert gruppiert werden, wie oben, und die auf dieser Grundlage Umlagerung gezeigt. Ich habe versucht, groupby in Pandas zu verwenden, aber es gab mir nicht die erforderliche Ausgabe. Es löschte die Daten in den Spalten nach 'CONT'.

Antwort

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 

Wenn Sie nicht möchten, dass die Daten indiziert:

>>> 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

Danke, es hat funktioniert. – johndaniel

+0

Gibt es eine pythonische Möglichkeit, leere Leerzeichen zwischen den zwei aufeinanderfolgenden Zeilen hinzuzufügen. Ich könnte es tun, indem ich einen neuen dataFrame erstelle und über Zeilen des ursprünglichen dataFrame iteriere und eins nach dem anderen hinzufüge. Ich habe mich gefragt, ob es einen anderen Weg geben könnte. – johndaniel

+0

Nicht wirklich. Bei Pandas geht es um Daten, nicht um Präsentation. Möglicherweise gibt es einige html/css Anzeigeoptionen, aber ich kenne sie nicht. – Alexander

Verwandte Themen