2013-04-16 3 views
2

я иметь следующую структуру: CsvТранспонирования CSV структура с помощью питона панд

 
'Country' '1960' '1961' '1962' 
AUS   450  567  723 
NZ      125  320 
IND   350  375  395 
SL   
PAK   100  115  218 

Использование Python панд как преобразовать (транспонирование) вышеуказанную структуру на следующее?

 
'Country' 'Year' 'Value' 
AUS   1960  450 
AUS   1961  567 
AUS   1962  723 
NZ   1960 
NZ   1961  125 
... 

Мои попытки использования стержня были бесполезны.

ответ

6
In [19]: df 
Out[19]: 
year  1960 1961 1962 
Country 
AUS  450 567 723 
NZ  NaN 125 320 
IND  350 375 395 
SL  NaN NaN NaN 
PAK  100 115 218 

In [20]: df.stack().reset_index() 
Out[20]: 
    Country year 0 
0  AUS 1960 450 
1  AUS 1961 567 
2  AUS 1962 723 
3  NZ 1961 125 
4  NZ 1962 320 
5  IND 1960 350 
6  IND 1961 375 
7  IND 1962 395 
8  PAK 1960 100 
9  PAK 1961 115 
10  PAK 1962 218 

По-видимому, NaN упали по пути.

+0

попробовал это. Но я понимаю это; , Level_0, level_1,0 0,0, Страна, AUS 1,0,1960,450.0 2,0,1961,567.0 3,0,1962,723.0 4,1, Страна, NZ 5,1 , 1961,125.0 6,1,1962,320,0 7,2, Страна, IND 8,2,1960,350,0 – richie

+0

Основываясь на вашем ответе, я попробовал df.transpose(). Stack(). Reset_index() и пришли где-то рядом с тем, что я хочу – richie

+0

Результат в моем примере соответствует (за исключением NaN) именно то, что вы хотели получить. Если вы не получите тот же результат, это означает, что вы извлекаете данные по-разному из файла csv, а ваш исходный кадр отличается от моего. –

Смежные вопросы