파이썬3/pandas

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

TTSR 2023. 10. 26. 10:38
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
반응형