私はこのようなパンダデータフレーム(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が任意のdxs列の特定の行にある場合、値が1または0の列25041があります。私はこのコードを使用していますが、行数が少ない場合に機能します。
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
行の数が数千または数百万の場合、ハングして永久にかかり、結果が得られません。セルの値は列に固有ではなく、複数列で繰り返されることに注意してください。exの場合、40391はdx1だけでなく、dx2でも発生し、0や5856などでも発生します。上記のロジックを改善する方法はありますか?
これを解決する方法はありますか?私のデータがどんどん大きくなり、既存のソリューションがこれまでに生成されたダミー列を必要とするので、私はまだこれが解決するのを待っています。
—
Sanoj