2016-08-02 74 views
2

sagen, dass ich einen Datenrahmen haben, die wie folgt aussieht:Abstapeln Datenrahmen mit mehreren 'Value' Spalten in Python Pandas

 keys sample verify 
0 foo  a  1  
1 bar  b  2  
2 monty  c  3  
3 foo  d  4  
4 bar  e  5 
5 monty  f  6 

dass ich in dieser Form wollen:

 foo_1 bar_1 monty_1 foo_2 bar_2 monty_2 
0  a  b  c  1  2  3 
1  d  e  f  4  5  6 

Was ist der beste Weg entstapeln? Ich habe sowohl pandas.pivot_table() als auch die Funktion pandas.unstack() ausprobiert, aber die Pivot-Tabelle arbeitet nicht mit alphabetischen Werten, und die Entstapelungs-Funktion funktioniert nicht so, wie ich denke (z. B. invers vom Stapel). Ich nehme an, Sie könnten Spalte für Spalte entstapeln und die Datenrahmen am Ende verbinden, das Problem, das ich am meisten habe, ist mit der Entstapelungsfunktion und was es tut. Irgendwelche Gedanken über den besten Weg, dies zu tun?

Antwort

1
df2 = df.set_index('keys').T.reset_index(drop=True) \ 
    .T.groupby(level=0).apply(lambda df: df.reset_index(drop=True)) \ 
    .stack().unstack(1).T 

df2.columns = df2.columns.set_levels((df2.columns.levels[1] + 1).astype(str), level=1) 
df2.columns = df2.columns.to_series().str.join('_') 

df2 

enter image description here

+0

funktioniert super! Danke eine Tonne – sfortney

+0

@sfortney froh, ich könnte helfen – piRSquared