지난 글에 이어 한 행 안의 여러개의 내용을 여러 행으로 분리하는 방법을 알아보자.
위 사진의 imgs_tags
열에는 여러개의 중괄호로 정보가 담겨있고, ,
를 기준으로 나뉘어있다.
여기서 split
함수를 사용하여 각각을 분리한 후, 하나로 합치기 위해 Series
로 바꿔준 다음에 마지막으로 reset_index.to_frame
을 이용해 dataframe형식으로 바꿔준다.
전체 코드는 아래와 같다.
test = test['optional_tags'].str.split(',')
test = test.apply(lambda x: pd.Series(x))
test = test.stack().reset_index(level=1, drop=True).to_frame('optional_tags')
한 줄 한 줄 실행했을 때 결과를 확인해보자.
test = test['optional_tags'].str.split(',')
위 코드를 실행했을 때
이렇게 ,
를 기준으로 imgs_tags
내용이 분리된다.
다음으로
test = test.apply(lambda x: pd.Series(x))
를 실행하면
와 같은 결과를 얻게된다. 한 행의 내용이 여러개의 열 안에 담긴다. 즉, 여러개의 내용이 각각의 새로운 열에 담긴 모습이다. 우리는 새로운 행에 담기길 원하므로 .stack()
함수를 이용해준다.
result.stack()
인덱스값이 새롭게 정렬됐다.
원래 인덱스값을 가져오기 위해 코드를 변형한다.
result.stack().reset_index(level = 1, drop = True)
인덱스값이 중요하지 않다면 위 과정은 생략할 수 있다.
아직 데이터프레임 형식이 아니므로 형식을 바꿔주는 코드를 추가한다.
result = result.stack().reset_index(level=1, drop=True).to_frame('imgs_tags')
imgs_tags
라는 열을 만들어 담아주는 과정이다.
이렇게 담기게 된다.