добавить двоичные значения в столбец данных на основе списка - PullRequest
2 голосов
/ 19 октября 2019

У меня есть «трипс» для фрейма данных, который выглядит следующим образом:

    Name  Age      Stops
a   jack   34      [A,B,C]
b   john   30      [B]
c  ralph   31      [A,C]
d   olaf   32      [A,B]     

, где столбец «Остановки» содержит списки остановок из [A, B, C] переменной длины. Мне удалось создать 3 дополнительных столбца с нулевыми значениями для A, B, C с помощью:

 for col in list_stops:
     trips[col] = 0

Я хотел бы для каждой строки добавить двоичные значения 0/1 в новые столбцы на основеЗначения каждого списка таковы, что новый фрейм данных выглядит следующим образом:

    Name  Age      Stops    A   B   C
a   jack   34      [A,B,C]  1   1   1
b   john   30      [B]      0   1   0
c  ralph   31      [A,C]    1   0   1
d   olaf   32      [A,B]    1   1   0

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Альтернативное решение с explode и pivot_table:

df = df.explode('Stops').pivot_table(index='Age', columns='Stops', aggfunc='size', fill_value=0).reset_index().rename_axis(None, axis=1)
0 голосов
/ 19 октября 2019

Я буду использовать sklearn

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
s=pd.DataFrame(mlb.fit_transform(df['Stops']),columns=mlb.classes_, index=df.index)
df=df.join(s)

Если у вас есть панды 0,25, мы можем попробовать explode

df.join(df['Stops'].explode().str.get_dummies().sum(level=0))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...