2014-09-19 84 views
-1

如何将嵌套字典列表转换为熊猫数据框?将嵌套字典导入熊猫

In [123]: 
metric_list 

Out[123]: 
[{'14-09-18': {u'AWSDataTransfer': 0.14, 
    u'AmazonDynamoDB': 0.0, 
    u'AmazonEC2': 15.0, 
    u'AmazonGlacier': 0.0, 
    u'AmazonRedshift': 275.4, 
    u'AmazonS3': 16.29, 
    u'AmazonSNS': 0.0}}, 
{'14-09-17': {u'AWSDataTransfer': 0.14, 
    u'AmazonDynamoDB': 0.0, 
    u'AmazonEC2': 13.75, 
    u'AmazonGlacier': 0.0, 
    u'AmazonRedshift': 249.05, 
    u'AmazonS3': 16.28, 
    u'AmazonSNS': 0.0}}] 

我不能直接导入数据到数据帧,如下图所示:

In [127]: 
pd.DataFrame(metric_list) 

Out[127]: 
    14-09-17 14-09-18 
0 NaN  {u'AmazonEC2': 15.0, u'AWSDataTransfer': 0.14,... 
1 {u'AmazonEC2': 13.75, u'AWSDataTransfer': 0.14... NaN 

回答

2

试试这个:

import pandas as pd 

data = [{'14-09-18': {u'AWSDataTransfer': 0.14, 
    u'AmazonDynamoDB': 0.0, 
    u'AmazonEC2': 15.0, 
    u'AmazonGlacier': 0.0, 
    u'AmazonRedshift': 275.4, 
    u'AmazonS3': 16.29, 
    u'AmazonSNS': 0.0}}, 
{'14-09-17': {u'AWSDataTransfer': 0.14, 
    u'AmazonDynamoDB': 0.0, 
    u'AmazonEC2': 13.75, 
    u'AmazonGlacier': 0.0, 
    u'AmazonRedshift': 249.05, 
    u'AmazonS3': 16.28, 
    u'AmazonSNS': 0.0}}] 

pd.concat([pd.DataFrame.from_dict(item, orient="index") for item in data]) 
0
mylist=[] 
for i in metric_list: 
    for k, v in i.items(): 
     for a, b in v.items(): 
      mytup = (k, a, b) 
      mylist.append(mytup) 
df = pd.DataFrame(mylist) 
df.columns =['date', 'type', 'amount'] 
df.set_index(['date', 'type'])