2015-02-05 14 views
7

Ho una tabella in formato csv che assomiglia a questo. Desidero trasporre tavolo in modo che i valori nella colonna nome indicatore sono le nuove colonne,Come ruotare un dataframe in Panda?

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 

desidero il risultato finale di come simili:

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

Ho provato using un frame di dati panda con poco successo.

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

Qualche idea su come realizzare questo?

Grazie

+0

Sapete che * questo * non è in formato csv, giusto? – alfasin

+0

@alfasin Potrebbe mostrarci i dati tabulari. Indipendentemente dal fatto che * sto supponendo * che se sta usando un dataframe panda, deve già averlo analizzato come un tavolo da qualche parte. –

+0

Che aspetto ha il tuo dataframe al momento? Che cosa fa quando chiami 'pivot' su di esso, che stai chiamando" non molto successo? " –

risposta

13

È possibile utilizzare pivot_table:

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

queste uscite:

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

Guardando la prima riga (nomi di colonne) dell'output - perché c'è una colonna di indicatori [colonna di sinistra ("Indicatore")] oltre alle colonne derivate dalla colonna degli indicatori [colonne di destra 5 ('1', '2',' 3', '4',' 5')]? – 3kstc

+0

È l'indice. – JAB

+0

grazie - Ho provato a fare [qualcosa di simile] (https://stackoverflow.com/questions/49185446/how-to-pivot-a-dataframe-with-pandas) ma non ho avuto fortuna. – 3kstc

0

Questa è una supposizione: non è un file ".csv", ma un Pandas dataframe importato da un '.csv'.

Per ruotare questa tabella si vogliono tre argomenti nel "pivot" di Pandas. per esempio, se df è il vostro dataframe:

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

Questo dovrebbe dovrebbe dare l'output desiderato.

+0

Cerca di essere sicuro di formattare le tue risposte in modo leggibile consultando la guida della sintassi SO – JoshKopen

+0

thx ... per la prima volta. –

+0

Tutti i rispondenti per la prima volta sono moderati, siamo qui per aiutarti a imparare a contribuire di più in futuro – JoshKopen