2014-09-19 118 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'])