2017-02-10 88 views
0

我有一列數據框,每行都包含一個字典。在數據框內循環播放熊貓字典

我想提取這些字典並將它們轉換爲數據框,以便我可以將它們合併在一起。

這樣做的最好方法是什麼?

喜歡的東西:

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

如果列包含類型的字典,你想使一個數據幀掉那些類型的字典中,你可以將列轉換爲類型的字典列表和使該成直接在數據幀:

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)