Как объединить несколько столбцов в два столбца, сохранив имена и значения столбцов в виде записей строк в python - PullRequest
0 голосов
/ 27 апреля 2020

Я хотел бы преобразовать следующую таблицу:

id   name    2002   2003   2004
1    name1   1      2      3
2    name2   4      5      6
3    name3   7      8      9

в эту:

id   name    year   value
1    name1   2002   1
1    name1   2003   2
1    name1   2004   3
2    name2   2002   4
2    name2   2003   5
2    name2   2004   6
3    name3   2002   7
3    name3   2003   8
3    name3   2004   9

Я получил:

df1.set_index(['id','name'])
  .stack().reset_index(name='a')
  .drop('a', 1)
  .rename(columns={'level_2':'year'})

Что меня получает вторая таблица без столбца значения, что мне нужно сделать, чтобы добавить столбец значения?

1 Ответ

2 голосов
/ 27 апреля 2020

Вы можете получить результат, используя функцию pd.melt:

In [18]: df = df1.melt(id_vars=['id','name'],var_name='year',value_name='value')

In [19]: df
Out[19]:
   id   name  year  value
0   1  name1  2002      1
1   2  name2  2002      4
2   3  name3  2002      7
3   1  name1  2003      2
4   2  name2  2003      5
5   3  name3  2003      8
6   1  name1  2004      3
7   2  name2  2004      6
8   3  name3  2004      9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...