본문 바로가기
AI 빅데이터/Python 테크틱과 팁

[파이썬 팁] Dictionary 행들을 DataFrame으로 바꾸기

by 마고커 2020. 12. 7.


가끔씩 컬럼 내의 데이터가 아래와 같이 Dictionary 형태의 String으로 된 경우가 있다.

 

컬럼의 데이터들을 Dictionary의 Key값으로 Column을 만들고, Value들을 각각의 Row로 만든다면 분석이 한결 편리해진다. 이럴 때는 간단히 key값만 column으로 뽑고, values들만 모아서 list로 만들어 준 다음에, 이 둘을 DataFrame 생성시 인자로 넘겨 주면 된다.

 

import json
import pandas as pd

# Dictionary로 보이는 값들은 사실 String이다. Dictionary로 읽어들인다.
df = data.apply(lambda x:json.loads(x['loc']), axis=1 )
df = pd.DataFrame(df, columns=['loc'])

# 첫번째 행의 Key를 Column 명으로
cols = df['loc'][0].keys() 

# Apply 함수로 Value 값을 List로 추출 -> rows는 List들의 Array
rows = df['loc'].apply(lambda x:list(x.values())) 

# 추출한 행과 칼럼명으로 DataFrame 구성
pd.DataFrame(rows.values.tolist(), columns=cols)

 

아래와 같이 정상적으로 Dictionary가 DataFrame으로 바뀌었음을 확인할 수 있다.

 

참고로, Dictionary로 되어 있는 행들을 String으로 바꾸고자 한다면 json.dumps()함수를 쓰면 된다.

 

data['loc'] = data['loc'].apply(lambda x: json.dumps(x))


댓글