将嵌套字典导入到pandas
如何将嵌套字典列表转换为数据帧将嵌套字典导入到pandas,pandas,Pandas,如何将嵌套字典列表转换为数据帧 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
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}}]
我无法直接将数据导入dataframe,如下所示:
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
试试这个:
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])
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'])