Создать уникальные столбцы для каждого уникального значения в столбце - PullRequest
1 голос
/ 08 октября 2019

У меня есть столбец pandas df, в котором есть категории книг. Для каждого уникального значения в этом столбце я хочу создать отдельный столбец.

Я попытался x.explode('A'), а затем I x.unstack(level=-1). Это не сработало

x=pd.DataFrame({'A':['action,adventure','adventure,biographies',
'biographies,action','adventure,diaries','biographies,diaries',
'diaries,adventure'], 
'B':[1,1,2,3,7,5]})
    action  adventure   biographies   diaries
0      1           1        NaN         NaN
1     NaN          1         1          NaN
2      2          NaN        2          NaN
3     NaN          3        NaN          3
4     NaN         NaN        7           7
5     NaN          5        NaN          5

1 Ответ

1 голос
/ 08 октября 2019

Вам нужно сочетание pivot, explode и str.split(',') Сначала str.split(',') сгенерирует список исходных строк, разделенных ,. После этого мы используем explode() для этого столбца, чтобы преобразовать каждый элемент в виде списка в строку, реплицируя значения индекса. Наконец, с помощью поворота мы можем присвоить значения столбца, который мы exploded, в качестве заголовков для нашего нового фрейма данных.

Похоже, это помогает:

import pandas as pd
x=pd.DataFrame({'A':['action,adventure','adventure,biographies',
'biographies,action','adventure,diaries','biographies,diaries',
'diaries,adventure'], 
'B':[1,1,2,3,7,5]})
x['A'] = x['A'].str.split(',')
x = x.explode('A')
final_df = x.pivot(columns='A')
print(final_df)

Вывод:

   B
A action adventure biographies diaries
0    1.0       1.0         NaN     NaN
1    NaN       1.0         1.0     NaN
2    2.0       NaN         2.0     NaN
3    NaN       3.0         NaN     3.0
4    NaN       NaN         7.0     7.0
5    NaN       5.0         NaN     5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...