2014-09-19 5 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}}] 

내가 직접 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 

답변

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']) 
관련 문제