one of a kind scene

[python] index를 나타내는 list를 가지고 onehot 인코딩한 vector 형태의 list 만들어주기 본문

Python/데이터 핸들링

[python] index를 나타내는 list를 가지고 onehot 인코딩한 vector 형태의 list 만들어주기

specialscene 2019. 12. 11. 00:03

(상황)

어떤 데이터 프레임 df에서 onehot인코딩하여 1값을 지닐 index를 담고있는 column1이 있을때,

이를 가지고 onehot 인코딩한 vector형태의 list를 column2에 만들어 주고자 한다.

 

(예제)

vector의 index를 담고있는 [1,4] 라는 list를 보고 [0,1,0,0,1]이라는 onehot 인코딩한 vector형태의 list 만들어주기

[1,4] → [0,1,0,0,1] 변환

 

(코드)

# 비어있는 column2를 만들어 준다
df['column2'] = np.NaN

for i in range(len(df)):
    # maxrange = len(벡터)
    maxrange = 벡터길이 설정해주면 됨
    
    # onehot만들어줄 0으로만 이루어진 list만들어주기
    onehot = [0] * (maxrange)
    
    # column1의 .iloc을 활용한 select할 수 있는 번호는 1번
    for j in df.iloc[i,1]:
    	# 해당 인자의 값만 1로 만들어주는 작업
        onehot[j] += 1
    # (중요) 데이터 프레임이 바로 list값을 value로 못받아서
    # string 변환 후 eval해주는 형식으로 코드를 짜야함
    df.iloc[i,2] = str(onehot)
    df.iloc[i,2] = eval(str(onehot))