2014-10-21 160 views
0

我有一个字典列表。这些字典中的一些对象本身就是字典。我想把它变成一个数据框。这是我目前得到的。嵌套字典到熊猫数据框的字典列表

In[163]: 
res = [{'A':1,'B':{'C':3,'D':4}},{'A':5,'B':{'C':7,'D':8}}] 
pd.DataFrame(res) 

Out[163]: 
    A B 
0 1 {u'C': 3, u'D': 4} 
1 5 {u'C': 7, u'D': 8} 

这就是我想要的:

A BC BD 
0 1 3 4 
1 5 7 8 

我真的不关心列标题名称。他们可以是任何事情。

回答

0
import pandas as pd 
res = [{'A':1,'B':{'C':3,'D':4}},{'A':5,'B':{'C':7,'D':8}}] 
df = pd.DataFrame(res) 

def col2frame(col): 
    try: 
     res = pd.DataFrame.from_records(col) 
     res.columns = [col.name+name for name in res.columns] 
     return res 
    except TypeError: 
     return col 

df = pd.concat([col2frame(df[col]) for col in df], axis=1) 
print(df) 

产生

A BC BD 
0 1 3 4 
1 5 7 8