Панды - разбить категориальные данные на столбцы - PullRequest
0 голосов
/ 27 мая 2018

У меня есть следующая таблица

df = pandas.DataFrame({'foo': ['b', 'a,b', 'a,c', 'a,b,c'], 
                       'bar': ['X,Y', 'Z', 'Z,X', 'X,Y']})

Я хочу иметь таблицу со столбцами 'a', 'b', 'c', 'X', 'Y', 'Z', сЛожные / истинные записи.

Это НЕ 1-горячий кодер, так как возможны несколько значений.Как мне этого достичь?

1 Ответ

0 голосов
/ 27 мая 2018

Я думаю, что нужно, если только 2 столбца удваиваются str.get_dummies с join и последним приведением для логического значения:

df = df['foo'].str.get_dummies(',').join(df['bar'].str.get_dummies(',')).astype(bool)
print (df)
       a      b      c      X      Y      Z
0  False   True  False   True   True  False
1   True   True  False  False  False   True
2   True  False   True   True  False   True
3   True   True   True   True   True  False

Если несколько столбцов, болееобщее решение list comprehension с concat:

df = pd.concat([df[x].str.get_dummies(',') for x in df.columns], axis=1).astype(bool)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...