2017-07-28 7 views
1

Ich muss 5 Datenrahmen mit dem gleichen Schlüssel verbinden. Ich habe während des Joins mehrere temporäre Daten erstellt. Der folgende Code funktioniert gut, aber ich frage mich, gibt es einen eleganteren Weg, um dieses Ziel zu erreichen? Vielen Dank!Pandas: Mehrere Datenrahmen auf den gleichen Tasten verbinden

df1 = pd.read_pickle('df1.pkl') 
df2 = pd.read_pickle('df2.pkl') 
df3 = pd.read_pickle('df3.pkl') 
df4 = pd.read_pickle('df4.pkl') 
df5 = pd.read_pickle('df5.pkl') 

tmp_1 = pd.merge(df1, df2, how ='outer', on = ['id','week']) 
tmp_2 = pd.merge(tmp_1, df3, how ='outer', on = ['id','week']) 
tmp_3 = pd.merge(tmp_2, df4, how ='outer', on = ['id','week']) 
result_df = pd.merge(tmp_3, df5, how ='outer', on = ['id','week']) 

Antwort

2

Verwenden pd.concat nach dem Index

dfs = [df1, df2, df3, df4, df5] 
cols = ['id', 'weedk'] 
df = pd.concat([d.set_index(cols) for d in dfs], axis=1).reset_index() 

Einstellung Include-Datei zu lesen

from glob import glob 

def rp(f): 
    return pd.read_pickle(f).set_index(['id', 'week']) 

df = pd.concat([rp(f) for f in glob('df[1-5].pkl')], axis=1).reset_index() 
Verwandte Themen