2016-05-27 5 views
0

у меня есть два списка dicts: тот, который имеет ежемесячные данные, а другой, который имеет ежеквартальные данные следующим образом:Объединение двух списков dicts в питона с помощью панд

monthly = [ 
{ 
    "name": "Boston", 
    "month": "2015-May", 
    "total_monthly": 2 
}, 
{ 
    "name": "Boston", 
    "month": "2015-June", 
    "total_monthly": 8 
}, 
{ 
    "name": "Chicago", 
    "month": "2015-May", 
    "total_monthly": 10 
}, 
{ 
    "name": "Chicago", 
    "month": "2015-June", 
    "total_monthly": 13 
} 
] 

quarterly =[ 
{ 
    "name": "Boston", 
    "quarter": "2015-Q1", 
    "total_quarterly": 23 
}, 
{ 
    "name": "Boston", 
    "quarter": "2015-Q2", 
    "total_quarterly": 24 
}, 
{ 
    "name": "Chicago", 
    "quarter": "2015-Q1", 
    "total_quarterly": 40 
}, 
{ 
    "name": "Chicago", 
    "quarter": "2015-Q2", 
    "total_quarterly": 32 
} 
] 

Обычно я могу перебирать списки и объединить их на основе общих имен. Однако как я могу достичь объединенных данных следующим образом, используя Pandas?

merged = [ 
{ 
    "name": "Boston", 
    "trend_monthly" : [ 
    { 
     "month": "2015-May", 
     "total_monthly": 2 
    }, 
    { 
     "month": "2015-June", 
     "total_monthly": 8 
    }, 
    ], 
    "trend_quarterly" : [ 
    { 
     "quarter": "2015-Q1", 
     "total_quarterly": 23 
    }, 
    { 
     "quarter": "2015-Q2", 
     "total_quarterly": 24 
    }, 
    ] 
}, 
{ 
    "name": "Chicago", 
    "trend_monthly" : [ 
    { 
     "month": "2015-May", 
     "total_monthly": 10 
    }, 
    { 
     "month": "2015-June", 
     "total_monthly": 13 
    }, 
    ], 
    "trend_quarterly" : [ 
    { 
     "quarter": "2015-Q1", 
     "total_quarterly": 40 
    }, 
    { 
     "quarter": "2015-Q2", 
     "total_quarterly": 32 
    }, 
    ] 
}]   
+0

Не следует ли "trend_quarterly" список в нижней части присоединяемого Словаре быть: "trend_quarterly": [{ "квартал": "2015-Q1", "total_quarterly": 40 }, { "квартал": "2015-Q2", "total_quarterly": 32 }, ]? – hhbilly

+0

@ hhbilly..yes..typo с моей стороны..corrected now .. – Amistad

+0

Вы хотите получить список dicts в конце или pandas DF? – MaxU

ответ

0

Вы должны сделать что-то вроде этого:

import pandas as pd 

df_monthly = pd.DataFrame(monthly) 
df_quarterly = pd.DataFrame(quarterly) 

df = pd.concat([df_monthly, df_quarterly]) 

# This part does not group correctly, please edit for your needs 
result = [] 
dict_monthly = dict(list(df[df.month.notnull()][['name', 
                'month', 
                'total_monthly'] 
               ].groupby(by='name'))) 

dict_quarterly = dict(list(df[df.quarter.notnull()][['name', 
                'quarter', 
                'total_quarterly'] 
               ].groupby(by='name'))) 
result.append(dict_monthly) 
result.append(dict_quarterly) 
Смежные вопросы