2017-06-12 4 views
0

Ich habe einen dict, die derzeit wie folgt aussieht:Merging zwei Pandas Datenrahmen mit einem Wörterbuch

raw_data = {'Series_Date':['2017-03-10','2017-03-11','2017-03-12','2017-03-13','2017-03-14','2017-03-15'],'Value':[1,1,1,1,1,1]} 
import pandas as pd 
df1= pd.DataFrame(raw_data,columns=['Series_Date','Value']) 
raw_data_ = {'Series_Date':['2017-03-16','2017-03-17','2017-03-18','2017-03-19','2017-03-20','2017-03-21'],'Value':[1,1,1,1,1,1]} 
df2= pd.DataFrame(raw_data_,columns=['Series_Date','Value']) 
dict = {} 
dict = {'Check':df1, 'Check2': df2} 
print dict 

ich einen Weg finden, wollen die beiden Datenrahmen-Serie in meinem dict in einer solchen Art und Weise zu verbinden, dass der Schlüssel Der Schlüssel der ersten Reihe und die Werte sind die zusammengefügten Datenrahmen. Mein resultierender dict sollte dann wie folgt aussehen:

raw_data = {'Series_Date':['2017-03-10','2017-03-11','2017-03-12','2017-03-13','2017-03-14','2017-03-15','2017-03-16','2017-03-17','2017-03-18','2017-03-19','2017-03-20','2017-03-21'],'Value':[1,1,1,1,1,1,1,1,1,1,1,1]} 
import pandas as pd 
df= pd.DataFrame(raw_data,columns=['Series_Date','Value']) 
dict = {} 
dict = {'Check':df} 
print dict 

Gibt es eine einfache Möglichkeit, dies zu tun?

Antwort

0

Sie können die beiden Frames zusammenführen und über Ihr Wörterbuch schreiben.

df_merged = pd.concat(dict.values()).sort_values(by='Series_Date').reset_index(drop=True) 
dict = {dict.keys()[0] : df_merged} 

Die 'erste' Information geht jedoch in einem Wörterbuch verloren, da die Schlüssel nicht geordnet sind. Die dict.keys() [0] geben also nicht unbedingt den Schlüssel des ersten Datenrahmens an. Sie können ein OrderedDict verwenden, um mit diesem Problem umzugehen.

Dann würde es so gehen:

raw_data = {'Series_Date':['2017-03-10','2017-03-11','2017-03-12','2017-03-13','2017-03-14','2017-03-15'],'Value':[1,1,1,1,1,1]} 
import pandas as pd 
from collections import OrderedDict 
df1= pd.DataFrame(raw_data,columns=['Series_Date','Value']) 
raw_data_ = {'Series_Date':['2017-03-16','2017-03-17','2017-03-18','2017-03-19','2017-03-20','2017-03-21'],'Value':[1,1,1,1,1,1]} 
df2= pd.DataFrame(raw_data_,columns=['Series_Date','Value']) 
dict = OrderedDict([('Check', df1), ('Check2', df2)]) 

df_merged = pd.concat(dict.values()).sort_values(by='Series_Date').reset_index(drop=True) 
dict = {dict.keys()[0] : df_merged} 
Verwandte Themen