Eu tenho um quadro de dados pandas (X11) como este: Na verdade, eu tenho 99 colunas até dx99
dx1 dx2 dx3 dx4
0 25041 40391 5856 0
1 25041 40391 25081 5856
2 25041 40391 42822 0
3 25061 40391 0 0
4 25041 40391 0 5856
5 40391 25002 5856 3569
Eu quero criar colunas adicionais para valores de célula como 25041,40391,5856 etc. Portanto, haverá uma coluna 25041 com o valor 1 ou 0 se 25041 ocorrer nessa linha específica em qualquer coluna dxs. Estou usando esse código e funciona quando o número de linhas é menor.
mat = X11.as_matrix(columns=None)
values, counts = np.unique(mat.astype(str), return_counts=True)
for x in values:
X11[x] = X11.isin([x]).any(1).astype(int)
Estou obtendo resultado assim:
dx1 dx2 dx3 dx4 0 25002 25041 25061 25081 3569 40391 42822 5856
25041 40391 5856 0 0 0 1 0 0 0 1 0 1
25041 40391 25081 5856 0 0 1 0 1 0 1 0 1
25041 40391 42822 0 0 0 1 0 0 0 1 1 0
25061 40391 0 0 0 0 0 1 0 0 1 0 0
25041 40391 0 5856 0 0 1 0 0 0 1 0 1
40391 25002 5856 3569 0 1 0 0 0 1 1 0 1
Quando o número de linhas é de muitos milhares ou milhões, ele fica suspenso e leva uma eternidade e não estou obtendo nenhum resultado. Por favor, veja que os valores das células não são exclusivos da coluna, ao invés de repetir em várias colunas. Por exemplo, 40391 está ocorrendo no dx1 e no dx2 e assim por diante para 0 e 5856 etc. Alguma idéia de como melhorar a lógica mencionada acima?