2016-07-29 19 views
0

Ich habe folgende Datenrahmen:reshape Datenrahmen in pandas um Layoutdaten horizontal

data = [['label1', 1234], ['label1', 12345], ['label2', 2345], ['label2', 4567], ['label3', 123], ['label2', 4589]] 
pd.DataFrame(data, columns=['label', 'id']) 

Ausgänge:

label id 
0 label1 1234 
1 label1 12345 
2 label2 2345 
3 label2 4567 
4 label3 123 
5 label2 4589 

Ich möchte, die Daten auf die folgende umformen:

label id1 id2 id3 
0 label1 1234 12345 None 
1 label2 2345 4567 4589 
2 label3 123 None None 

Legen Sie die IDs grundsätzlich horizontal an und fügen Sie den IDs eindeutige Beschriftungen hinzu, wobei jede Zeile auf dem Etikett codiert ist.

Ich schaute auf Schwenkoperationen in Pandas, und ich kann nicht scheinen, die exakte Beschwörung herauszufinden, die ich brauche, um die Daten in dem Format zu bekommen, das ich für die Ausgabe brauche.

Jede Hilfe würde sehr geschätzt werden!

Antwort

3

Zuweisen einer neuen Spalte die IDs aufzuzählen, verwenden Schwenk:

(df.assign(ids='id' + (df.groupby('label').cumcount()+1).astype(str)) 
    .pivot(index='label', columns='ids', values='id')) 
Out: 
ids  id1  id2  id3 
label       
label1 1234.0 12345.0  NaN 
label2 2345.0 4567.0 4589.0 
label3 123.0  NaN  NaN