2015-02-05 16 views
7

Mam tabelę w formacie csv, który wygląda tak. Chciałbym przenieść tabelę tak, że wartości w kolumnie Nazwa wskaźnika są nowe kolumny,Jak przestawić ramkę danych w Pandach?

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 

Chciałbym wynik końcowy lubić tak:

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

Próbowałem, używając ramka danych pandy z niewielkim powodzeniem.

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

Jakieś przemyślenia na temat tego, jak to osiągnąć?

Dzięki

+0

Wiesz, że * to * nie jest formatem CSV, prawda? – alfasin

+0

@alfasin On mógłby pokazywać nam dane tabelaryczne. Niezależnie od tego * zgaduję *, że jeśli używa pandasowej frameworki danych, którą musi już przetworzyć, to gdzieś jest stół. –

+0

Jak wygląda obecnie Twoja ramka danych? Co robi, gdy nazywasz go 'pivot', że nazywasz" niezbyt dużym sukcesem? " –

Odpowiedz

13

Można użyć pivot_table:

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

to wyjścia:

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

Patrząc na pierwszą linię (nazwy kolumn) wyjścia - dlaczego jest tam kolumna wskaźnikowa [lewa kolumna ("' Wskaźnik ")] oprócz kolumn wyprowadzonych z kolumny wskaźników [prawo 5 kolumn (" 1 ", '2',' 3', '4',' 5')]? – 3kstc

+0

To jest indeks. – JAB

+0

dzięki - próbowałem robić [coś podobnego] (https://stackoverflow.com/questions/49185446/how-to-pivot-a-dataframe-with-pandas), ale nie miałem szczęścia. – 3kstc

0

To przypuszczenie: to nie jest ".csv" plik, ale Pandy DataFrame importowany z ".csv".

Aby obrócić tę tabelę, potrzebujesz trzech argumentów w Pandach "przestawnym". na przykład, jeżeli df to dataframe:

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

Należy powinny dają pożądany wynik.

+0

Spróbuj sformatować swoje odpowiedzi w czytelny sposób, patrząc na składnię pomocy SO – JoshKopen

+0

thx ... po raz pierwszy. –

+0

Wszyscy, którzy udzielili pierwszej pomocy, są moderowani, jesteśmy tutaj, aby pomóc Ci nauczyć się wnosić więcej w przyszłości – JoshKopen