pandas: создать новый фрейм данных из существующих значений столбцов - PullRequest
2 голосов
/ 19 июня 2020

У меня есть такой фрейм данных;

ID          code   num
333_c_132   x       0
333_c_132   n36     1
998_c_134   x       0
998_c_134   n36     0
997_c_135   x       1
997_c_135   n36     0

Из этого я должен создать новый фрейм данных, как показано ниже; вы можете видеть, что новый столбец numX формируется с уникальным ID. Обратите внимание, что значения numX берутся из столбца num, соответствующего n36.

ID          code   num   numX
333_c_132   x       0     1
998_c_134   x       0     0
997_c_135   x       1     0

Как я могу сделать это только с помощью pandas?

1 Ответ

4 голосов
/ 19 июня 2020

Вы можете использовать маску, а затем объединить после поворота:

m = df['code'].eq('n36')
(df[~m].merge(df[m].set_index(['ID','code'])['num'].unstack()
                              ,left_on='ID',right_index=True))

          ID code  num  n36
0  333_c_132    x    0    1
2  998_c_134    x    0    0
4  997_c_135    x    1    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...