Извлечь элемент из списка внутри ячейки в Pandas - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть фрейм данных, который выглядит примерно так:

Текущий фрейм данных

         col 1                          col 2

["item - 1", "item - 2"]       ["item - 3", "item - 4"]

Как мне извлечь элементы из этого фрейма, чтобы в итоге я получил элементы в виде заголовков столбцов и числараз они встречаются в каждой строке для столбца 1 и столбца 2

Требуемый фрейм данных

         col 1                    col 2                    item1 item2 item3 item4


["item - 1", "item - 2"]       ["item - 3"]                  1     1     1     0
["item - 1"]                   ["item - 3", "item - 4"]      1     0     1     1
["item - 1", "item - 2"]       ["item - 3", "item - 4"]      1     1     1     1

Я пробовал несколько методов, но каждый раз я получаю сообщение об ошибке: нечитаемый тип: 'список'

1 Ответ

0 голосов
/ 18 ноября 2018

Работа со списками и строками в pandas никогда не бывает эффективной.Но вы все равно можете их использовать ..

Использование sklearn.preprocessing.MultiLabelBinarizer

mlb = MultiLabelBinarizer()

pd.DataFrame(mlb.fit_transform(ds['col 1'].add(ds['col 2'])), 
             columns=mlb.classes_, 
             index=df.index)


    item - 1    item - 2    item - 3    item - 4
0   1           1           1           0
1   1           0           1           1

Использование подхода чистых панд также работает, но медленно ..

ds.a.add(ds.b).astype(str).str.replace(' - ', '').str.strip('[]').str.get_dummies(sep=', ')

    item1    item2  item3    item4
0   1        1      1        0
1   1        0      1        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...