pandas

[pandas] Data Frame 중첩 Dict 으로 생성하기

전감자(◔◡◔) 2022. 10. 2. 16:06

Data Frame 의 중첩과 중첩 리스트에 대해서 알아보자 

 

'''
   중첩 dict
   dict_value = { key1: { key1-1: value},
                  key2: { key2-1: value},
                  ....}
   key1, key2 ==> 컬럼명으로 지정됨.
   key1-1, key2-1 ==> 인덱스로 지정됨.
'''

 

앞서 dict 로 Data Frame 을 만드는 것을 배웠는데 위 처럼 dict 의 value 값에 다시 dict 가 들어가있으면

어떤 Data Frame 이 만들어 질까?

 

 

mport numpy as np
import pandas as pd

dict_value = {"key1":{"key1-1":[1,2,3]},
              "key2":{"key2-1":[1,2,3]},
              "key3":{"key3-1":[1,2,3]}
              }

 

실습을 위해 위와 같은 중첩 dict 를 만들어 주었다. 

 

df = pd.DataFrame(dict_value)
print(df)
'''
             key1       key2       key3
key1-1  [1, 2, 3]        NaN        NaN
key2-1        NaN  [1, 2, 3]        NaN
key3-1        NaN        NaN  [1, 2, 3]
'''

 

출력해보면 결과는 위와 같다.

 

key1, key2, key3는 중첩을 하지 않았을 때와 마찬가지로 컬럼이름으로 들어갔고, 

 

key1-1, key2-1, key3-1는 인덱스 이름으로 들어간 것을 확인할 수 있다.  

 

그리고 이전과 다르게 [1,2,3] 이 각각의 레코드로 들어가는 것이 아니라 (key1-1,key1)  

한 칸에 [1,2,3]이 통째로 들어간 것을  유의하자.

 

나머지 레코드들에는 값이 들어있지 않기 때문에 Nan 이 출력되었다. 

 

 

 

# 응용
dict_value ={'Nevada':{2001:2.4,2002:2.9},
             'Ohio':  {2001:1.7,2002:3.6}}
df = pd.DataFrame(dict_value)
print(df)
'''
      Nevada  Ohio
2001     2.4   1.7
2002     2.9   3.6
'''

Nan 이 없는 Data Frame 을 만들기 위해서는 위 처럼 중첩으로 넣은 dict 의 key 값을 여러번 써줘서

컬럼에 대응하는 값을 모두 넣어주어야 한다.