한 행 안의 여러개의 내용을 여러 행으로 분리하기

Yelim Kim·2022년 6월 14일
0

Kaggle

목록 보기
27/29


지난 글에 이어 한 행 안의 여러개의 내용을 여러 행으로 분리하는 방법을 알아보자.

위 사진의 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라는 열을 만들어 담아주는 과정이다.

이렇게 담기게 된다.

profile
뜬금없지만 세계여행이 꿈입니다.

0개의 댓글