Панды - объединение нескольких столбцов в один - PullRequest
2 голосов
/ 10 ноября 2019

У меня есть фрейм данных с несколькими категориальными столбцами, и я хочу объединить все это в один категориальный столбец, предпочтительно используя Pandas.

Например, если у меня есть два столбца с именем category1 (c1)и category2 (c2), оба с данными в диапазоне от 0 до 2, я хочу объединить их в какой-то другой столбец категории (c), который может находиться в диапазоне от 0 до 5, представляя все возможные комбинации категориальных значений.

Я бы пошел от этого:

d1 d2 c1 c2
1  1  NA 0
2  1  1  1
3  1  0  2
4  2  2  NA
5  1  NA NA
6  2  2  2
7  2  0  NA
8  2  0  2

К этому:

d1 d2 c
1  1  0
2  1  1
3  1  2
4  2  3
5  1  4
6  2  5 
7  2  6
8  2  2

Я пытался следовать это , но это не казалосьработать и выдавал некоторые ошибки, а именно ValueError: не может переиндексировать с дублированной оси.

Заранее благодарен за любую помощь.

1 Ответ

2 голосов
/ 10 ноября 2019

IIUC, вы можете использовать ngroup с groupby.

df['c'] = df.fillna(-1).groupby(['c1', 'c2']).ngroup()

Порядок может быть произвольным (т.е. не таким, как у вас), но, надеюсь, это не важно.


   d1  d2  c
0   1   1  1
1   2   1  4
2   3   1  3
3   4   2  5
4   5   1  0
5   6   2  6
6   7   2  2
7   8   2  3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...