2013-06-25 12 views
24

Ich habe folgenden Datenrahmen:Python Pandas: Konvertieren Zeilen als Spaltenüberschriften

Year Country   medal no of medals 
1896 Afghanistan  Gold  5 
1896 Afghanistan  Silver  4 
1896 Afghanistan  Bronze  3 
1896 Algeria   Gold  1 
1896 Algeria   Silver  2 
1896 Algeria   Bronze  3 

Ich will es auf diese Weise.

Year Country  Gold Silver Bronze 
1896 Afghanistan 5  4   3 
1896 Algeria  1  2   3 

Stapel/Unstack nicht zu funktionieren scheint.

Antwort

35

Sie suchen pivot_table:

In [11]: medals = df.pivot_table('no of medals', ['Year', 'Country'], 'medal') 

In [12]: medals 
Out[12]: 
medal    Bronze Gold Silver 
Year Country 
1896 Afghanistan  3  5  4 
    Algeria   3  1  2 

und wenn Sie die Spalten neu anordnen möchten:

In [12]: medals.reindex_axis(['Gold', 'Silver', 'Bronze'], axis=1) 
Out[12]: 
medal    Gold Silver Bronze 
Year Country 
1896 Afghanistan  5  4  3 
    Algeria   1  2  3 
+7

Dies schafft eine Multi-Level-Index, der nicht 100% ist, was gewünscht wurde. Befreien Sie sich von 'medias.reset_index (drop = False, inplace = True)' gefolgt von 'medias.reindex_axis (['Year', 'Country', 'Gold', 'Silver', 'Bronze'], Achse = 1) ' – madoki

Verwandte Themen