2016-09-17 6 views
1

Ich habe einen Datenrahmen wieSplitting gestapelte Datenrahmen in pandas

  age sex  values 
time       
2015  10 F 589628.0 
2015  10 M 458390.0 
2015  11 F 108018.0 
2015  11 M 764350.0 
.... 
2000  60 M  34676.0 
2000  60 F  45488.0 

Ich mag würde Datenrahmen wie

  age F   M 
time       
2015  10 589628.0 458390.0  
2015  11 
.... 
2000  60 45488.0 34676.0 

Verringerung der Reihen um die Hälfte zu schaffen und eine Spalte hinzugefügt wird. Ich habe versucht, dies mit Pivot zu tun, aber ohne Erfolg.

df.pivot(columns='sex', values='values') 

aber kehrt

Index contains duplicate entries, cannot reshape 

Irgendwelche Ideen, wie kann ich sauber die Datenrahmen aufgeteilt, ohne eine langwierige Funktion zu schreiben, es zu tun?

Cheers, Mike

Antwort

3

ich nicht bestätigen kann, aber es sollte

df.set_index(['age', 'sex'], append=True)['values'].unstack().reset_index('age') 
+0

Ich denke, das ist schneller. – jezrael

1

Mit pivot_table und reset_index:

In [17]: df 
Out[17]: 
     age sex values 
time     
2015 10 F 589628.0 
2015 10 M 458390.0 
2015 11 F 108018.0 
2015 11 M 764350.0 

In [18]: newdf = df.reset_index().pivot_table('values', ['time', 'age'], 'sex').reset_index() 

In [19]: newdf.columns.name = None 

In [20]: newdf = newdf.set_index(['time']) 

In [21]: newdf 
Out[21]: 
     age   F   M 
time       
2015 10 589628.0 458390.0 
2015 11 108018.0 764350.0