2017-06-19 2 views
1

fragte ich eine ähnliche Frage den anderen Tag mit Daten aus zwei Spalten:durch eindeutige Werte Gruppierung während Spalt zur Umsetzung

Grouping columns by unique values in Python

Jetzt habe ich drei Spalten. Sie müssen nach Spalte A mit Spalte B gruppiert werden, während die Kopfwerte und Spalte C richtig sortiert sind.

Meine Datenrahmen wie folgt aussieht:

A B C 
25115 20 45 
25115 30 154 
25115 40 87 
25115 70 21 
25115 90 74 
26200 10 48 
26200 20 414 
26200 40 21 
26200 50 288 
26200 80 174 
26200 90 54 

Aber ich muss damit am Ende:

 10 20 30 40 50 70 80 90 
25115  45 154 87  21  74 
26200 48 414  21 288  174 54 

Damit werden die Werte der Spalte C wird, aber nicht mit Spalte B als die Zeilennamen .

import pandas as pd 
df = pd.DataFrame({'A':[25115,25115,25115,25115,25115,26200,26200,26200,26200,26200,26200],'B':[20,30,40,70,90,10,20,40,50,80,90],'C':[45,154,87,21,74,48,414,21,288,174,54]}) 
a = df.groupby('A')['C'].apply(lambda x:' '.join(x.astype(str))) 

Alle Ideen würden am meisten geschätzt werden.

+0

so einige Dinge, scheint, wie alles, was Sie den Code kopiert haben waren, dass jemand für zwei Spalten im vorherigen Beispiel vorgesehen, ohne auch nur zu modifizieren Zweitens, viele Leute haben dir in diesem Thread gute Antworten gegeben und es scheint, als ob du einige dieser Antworten benutzt, aber du hast keine ihrer Antworten als richtig akzeptiert. –

Antwort

1
  • Option 1:

Verwenden pivot_table:

df.pivot_table(values='C',index='A',columns='B') 

Output

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
  • Option 2:
Verwenden

set_index/Entstapelungsunterdrückung:

df.set_index(['A','B'])['C'].unstack() 

Ausgang:

B  10  20  30 40  50 70  80 90 
A               
25115 NaN 45.0 154.0 87.0 NaN 21.0 NaN 74.0 
26200 48.0 414.0 NaN 21.0 288.0 NaN 174.0 54.0 
+0

Super danke! –

Verwandte Themen