Как переключить n столбцов в строки строк ar pandas dataframe (n * r строк в конечном dataframe)? - PullRequest
1 голос
/ 20 февраля 2020

Давайте возьмем этот кадр данных:

pd.DataFrame(dict(Col1=["a","c"],Col2=["b","d"],Col3=[1,3],Col4=[2,4]))
  Col1 Col2  Col3  Col4
0    a    b     1     2
1    c    d     3     4

Я хотел бы иметь одну строку для каждого значения в столбце Col1 и столбце Col2 (n = 2 и r = 2, поэтому ожидаемый кадр данных имеет 2 * 2 = 4 строк).

Ожидаемый результат:

    Ind Value  Col3  Col4
0  Col1     a     1     2
1  Col1     c     3     4
2  Col2     b     1     2
3  Col2     d     3     4

Как, пожалуйста, я могу это сделать?

1 Ответ

2 голосов
/ 20 февраля 2020

Pandas melt делает работу здесь; остальное просто связано с изменением положения и переименованием столбцов.

Используйте pandas melt для преобразования кадра данных, используя Col3 и 4 в качестве индексных переменных. Расплав обычно преобразуется из широкого в длинный.
Следующий шаг - переиндексируйте столбцы, используя переменные и значения в качестве ведущих столбцов.
Наконец, соответствующим образом переименуйте столбцы.

 (df.melt(id_vars=['Col3','Col4']) 
  .reindex(['variable','value','Col3','Col4'],axis=1)
  .rename({'variable':'Ind','value':'Value'},axis=1)
  )

    Ind Value   Col3   Col4
0   Col1    a   1      2
1   Col1    c   3      4
2   Col2    b   1      2
3   Col2    d   3      4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...