У мене є кадр даних панди (X11), як це: Насправді у мене є 99 стовпців до 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
Я хочу створити додаткові стовпці для значень комірок, таких як 25041,40391,5856 тощо. Отже, буде колонка 25041 зі значенням як 1 або 0, якщо 25041 зустрічається в цьому конкретному рядку в будь-яких стовпцях dxs. Я використовую цей код, і він працює, коли кількість рядків менше.
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)
Я отримую такий результат:
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
Коли кількість рядків складає багато тисяч або мільйонів, вона зависає і займає назавжди, і я не отримую жодного результату. Зверніть увагу, що значення комірок не є унікальними для стовпців, а повторюються у кількох стовпцях. Наприклад, 40391 зустрічається як в dx1, так і в dx2 і так далі для 0 і 5856 і т. Д. Будь-яка ідея, як покращити згадану вище логіку?