2017-02-10 3 views
0

각 행에는 dict이 들어있는 열이있는 데이터 프레임이 있습니다.데이터 프레임 내의 Pandas dict를 통한 루핑

나는 그 딕트를 추출하여 데이터 프레임으로 변환하여 병합 할 수 있기를 바랍니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

뭔가 같은 : 당신의 열이 dicts를 포함하고 당신이 그 dicts 밖으로 dataframe을 만들고 싶어

for row in dataframe.column: 
    dataframe_loop = pd.DataFrame(dataframe['column'].iloc(row), columns=['A','B']) 
    dataframe_result = dataframe_result.append(dataframe_loop) 
+0

솔루션의 문제점은 무엇입니까? 루프가 작동하기 위해'iteritems'가 누락 된 것 같습니다. – languitar

+0

사전에있는 키는 무엇입니까? 새로운 데이터 프레임의 열과 어떻게 관련되어 있습니까? – ASGM

답변

0

경우, 당신은 단지 직접 dataframe에 dicts의 목록에 열을 변환하고 만들 수 있습니다 :

pd.DataFrame(dataframe['column'].tolist()) 

사전 키가 열이됩니다. 다른 동작을 원할 경우이를 지정해야합니다.

0
import pandas as pd 

d = {'col': pd.Series([{'a':1}, {'b':2}, {'c':3}])} 

df = pd.DataFrame(d) 

>>>print(df) 

     col 
0 {'a': 1} 
1 {'b': 2} 
2 {'c': 3} 

res = {} 

for row in df.iterrows(): 
    res.update(row[1]['col']) 

>>>print(res) 
{'b': 2, 'a': 1, 'c': 3} 
0

나는 dataframe.column에서 귀하의 의견을 모릅니다. 아래의 사전처럼 보이는 경우 pandas.concat을 사용하여 사전을 집중시킬 수 있다고 생각합니다.

import pandas as pd 

# create a dummy dataframe 
dataframe = pd.DataFrame({'column':[{'A':[1,2,3], 'B':[4,5,6]}, \ 
            {'A':[7,8,9], 'B':[10,11,12]}, \ 
            {'A':[13,14,15], 'B':[16,17,18]}]}) 

#print(dataframe) 

res = pd.concat([pd.DataFrame(row, columns=['A', 'B']) for row in dataframe.column], ignore_index=True) 

print(res)