본문 바로가기

파이썬3/pandas

다양한 길이를 갖는 dictionary를 pd.dataframe으로 바꾸는 기능

728x90
반응형

1. 필요성

pandas에서는 dictionary를 dataframe으로 바꿔주는 기능이 이미 있지만 이것은 diconary의 개별 key값들이 갖는 item의 숫자가 동일해야하는 문제가 있다.

온라인에 공개된 method들은 key값이 column으로 가는 wide-form으로 된 것들이 많아 NaN이 생길수 밖에 없다.

이러한 문제를 해결하고자 long-form으로 만드는 간단한 python 기능을 만들었다.

 

2. 기능 설명

해당 기능은 먼저 wide-form으로 만든 후에 pands의 melt기능을 활용해서 long-form으로 만든 후 NaN들은 제거한다.

이 때 key값이나 index에는 NaN이 없어야 한다.

 

def dict2df(x):
    '''
    x : dictionary
    '''
    x1=pd.DataFrame([pd.Series(x[key]) for key in x.keys()])
    x1.index=x.keys()
    x1=x1.reset_index().melt(id_vars='index').drop('variable',axis=1).dropna()
    return x1

3. 사용 예제

import pandas as pd
di={'a':[1,2,3],'b':['x','y'],'c':['o','x','o','x',1]}
 
dict2df(x=di)
# 실행결과는 아래에 있다.

728x90
반응형

'파이썬3 > pandas' 카테고리의 다른 글

pd.read_csv 빠르게 하는 법  (0) 2023.02.16
pandas apply axis 방향  (0) 2022.02.04
판다스 텍스트로 행 (row) 늘리기  (0) 2022.01.26