Saya memiliki bingkai data panda (X11) seperti ini: Sebenarnya saya memiliki 99 kolom hingga 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
Saya ingin membuat kolom tambahan untuk nilai sel seperti 25041.40391.5856 dll. Jadi akan ada kolom 25041 dengan nilai 1 atau 0 jika 25041 terjadi di baris tertentu di setiap kolom dxs. Saya menggunakan kode ini dan berfungsi ketika jumlah baris lebih sedikit.
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)
Saya mendapatkan hasil seperti ini:
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
Ketika jumlah baris ribuan atau jutaan, itu hang dan memakan waktu selamanya dan saya tidak mendapatkan hasil apa pun. Harap lihat bahwa nilai sel tidak unik untuk kolom, alih-alih diulang dalam multi kolom. Sebagai contoh, 40391 terjadi di dx1 dan juga di dx2 dan seterusnya untuk 0 dan 5856 dll. Adakah cara untuk meningkatkan logika yang disebutkan di atas?