2015-03-29 3 views
0

У меня есть эта матрица:Как изменить панд DataFrame, превращая имена столбцов в значения

 columnA columnB ... columnX 
index0 val0A val0B ... val0X 
index1 val1A val1B ... val1X 
... ...  ...  ... ... 
indexN valNA valNB ... valNX 

Я хочу, чтобы изменить панд DataFrame следующим образом:

 values columns 
index0A val0A columnA 
index1A val1A columnA 
...  ...  ...  
index0B val0B columnB 
index1B val1B columnB 
... 
indexNX valNX columnX 

Как я могу добиться этого и Каково обычное название этого преобразования?

+0

Взгляните на '' 'стека()' '' – JohnE

+0

Обратите внимание, что 'stack' даст вам мультииндекс, который может быть нежелателен в этом случае. – ely

+0

'stack' в сочетании с' reset_index' будет делать трюк. – Alex

ответ

4

Я думаю, что вы хотите растопить()

В качестве примера

df = pd.DataFrame({"A": [10,20,45,34,23], "B": [20, 30, 10, 40, 50]}) 
df 

    A B 
0 10 20 
1 20 30 
2 45 10 
3 34 40 
4 23 50 

pd.melt (DF)

variable value 
0 A   10 
1 A   20 
2 A   45 
3 A   34 
4 A   23 
5 B   20 
6 B   30 
7 B   10 
8 B   40 
9 B   50 
+1

Затем в конце вы можете просто взять столбец 'value', и вы можете установить индекс на любую длину' N * X', которую вы хотите, в случае, если целые числа от 0 до 'N * X' не являются желаемый индекс вывода (поскольку это неоднозначно в вопросах OP, например, индекс 'index0A' просто целое число или какое-то новое значение индекса полностью?) – ely

+0

Хорошая точка @ Mr.F –

+0

Спасибо, что указали мне на' melt() ' - Я искал именно эту функцию. Что касается индекса, я возвращаю его с помощью 'reset_index()', и я сохранил его, используя параметр 'id_vars' в' melt() '. – gc5

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