가끔씩 컬럼 내의 데이터가 아래와 같이 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))
'AI 빅데이터 > Python 테크틱과 팁' 카테고리의 다른 글
[Zip] Starred Expression : Unzip하기 (0) | 2024.03.07 |
---|---|
[Apple M1] M1 칩용 Tensorflow 설치 (0) | 2021.10.22 |
[파이썬 팁] Apache Arrow로 Dataframe 빨리 읽기 (966) | 2021.01.07 |
[Apple M1] Rosetta Terminal 실행과 Conda 설치 (978) | 2020.12.30 |
[Apple M1] Apple 실리콘용 Tensorflow 실행하기 (8) | 2020.12.22 |
댓글