나는 팬더 데이터 프레임 (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 등과 같은 셀 값에 대한 추가 열을 만들고 싶습니다. 따라서 dxs 열의 특정 행에서 25041이 발생하면 값이 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
행 수가 수천 또는 수백만 개일 때 행이 끊어지고 영원히 걸리며 결과가 없습니다. 셀 값은 열에 고유하지 않고 여러 열에서 반복됩니다. 예를 들어, 40391은 dx2와 dx2 등에서 0과 5856 등에서 발생합니다. 위에서 언급 한 논리를 개선하는 방법에 대한 아이디어가 있습니까?
어떻게 해결할 수 있습니까? 데이터가 점점 커지고 기존 솔루션이 더미 열을 생성하는 데 시간이 오래 걸리기 때문에 여전히이 문제가 해결되기를 기다리고 있습니다.
—
Sanoj