将嵌套字典导入到pandas中

时间:2014-09-19 03:45:14

标签: pandas

如何将嵌套词典列表转换为pandas dataframe?

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 个答案:

答案 0 :(得分: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])

答案 1 :(得分: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'])