2015-02-05 9 views
7

Ich habe eine Tabelle im CSV-Format, die so aussieht. Ich möchte die Tabelle transponieren, so dass die Werte in der Anzeige Namensspalte die neuen Spalten sind,Wie wird ein Datenrahmen in Pandas geschwenkt?

Indicator  Country   Year Value  
1    Angola   2005 6 
2    Angola   2005 13 
3    Angola   2005 10 
4    Angola   2005 11 
5    Angola   2005 5 
1    Angola   2006 3 
2    Angola   2006 2 
3    Angola   2006 7 
4    Angola   2006 3 
5    Angola   2006 6 

Ich würde das Endergebnis gefällt, wie dies zu mögen:

Country Year  1  2  3  4  5 
Angola  2005  6  13 10 11 5 
Angola  2006  3  2  7  3  6 

Ich habe versucht, mit ein Pandas Datenrahmen mit nicht viel Erfolg.

print(df.pivot(columns = 'Country', 'Year', 'Indicator', values = 'Value')) 

Irgendwelche Gedanken darüber, wie dies zu erreichen ist?

Dank

+0

Sie wissen, dass * das * nicht im CSV-Format ist, oder? – alfasin

+0

@alfasin Er könnte uns die Tabellendaten zeigen. Trotzdem rate ich, wenn er einen Pandas-Datenframe benutzt, dass er ihn schon irgendwo als Tabelle analysiert haben muss. –

+0

Wie sieht Ihr Dataframe derzeit aus? Was macht es, wenn du 'pivot' darauf nennst, dass du" nicht viel Erfolg "nennst? –

Antwort

13

können Sie pivot_table verwenden:

pd.pivot_table(df, values = 'Value', index=['Country','Year'], columns = 'Indicator').reset_index() 

diese Ausgänge:

Indicator Country  Year 1 2 3 4 5 
0   Angola  2005 6 13 10 11 5 
1   Angola  2006 3 2 7 3 6 
+0

Betrachtet man die allererste Zeile (Spaltennamen) der Ausgabe - warum gibt es eine Indikatorspalte [linke Spalte ("Indikator")] zusätzlich zu Spalten, die von der Spalte "Indikatoren" abgeleitet sind [rechts 5 Spalten ('1', "2", "3", "4", "5")]? – 3kstc

+0

Es ist der Index. – JAB

+0

danke - Ich habe versucht [etwas ähnliches] (https://stackoverflow.com/questions/49185446/how-to-pivot-a-dataframe-with-pandas), hatte aber kein Glück. – 3kstc

0

Dies ist eine Vermutung: es ist kein ".csv" Datei, sondern eine Pandas Dataframe importiert von einem ".csv".

Um diese Tabelle zu drehen, möchten Sie drei Argumente in Ihrem Pandas "Pivot". zum Beispiel wenn df ist Ihr Datenrahmen:

table = df.pivot(index='Country',columns='Year',values='Value') 
print (table) 

Dies sollte sollte die gewünschte Ausgabe geben.

+0

Versuchen Sie sicherzustellen, dass Sie Ihre Antworten in einer lesbaren Weise formatieren, indem Sie auf die SO-Syntaxhilfe – JoshKopen

+0

thx schauen ... erstmalig beitragen. –

+0

Alle Erstbeantworter sind moderiert, wir sind hier, um Ihnen zu helfen, in Zukunft mehr beizutragen – JoshKopen