2015-01-07 2 views
0

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

In [1]: import pandas as pd 
In [26]: d1 = {'foo':0.3, 'bar':0.55} 
In [27]: d2 = {'foo':0.4, 'bar':0.55, 'qux':0.3} 
In [28]: d3 = {'foo':0.1, 'qux':5.55} 
In [29]: df1 = pd.DataFrame.from_dict(d1, orient='index') 
In [31]: df2 = pd.DataFrame.from_dict(d2, orient='index') 
In [32]: df3 = pd.DataFrame.from_dict(d3, orient='index') 
In [43]: df1.columns = ['x'] 
In [45]: df2.columns = ['y'] 
In [46]: df3.columns = ['z'] 

In [50]: df1 
Out[50]: 
     x 
foo 0.30 
bar 0.55 

In [51]: df2 
Out[51]: 
     y 
qux 0.30 
foo 0.30 
bar 0.55 

In [52]: df3 
Out[52]: 
     z 
qux 5.55 
foo 0.30 

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

 x  y  z 
foo 0.3 0.4 0.1 
qux NA  0.3 5.55 
bar 0.55 0.55 NA 

Как я могу это достичь?

Я попытался это, но не смог:

dfs = [df1,df2,df3] 
df = pd.DataFrame() 
for d in dfs: 
    df = pd.merge(df, d, how = 'outer') 

ответ

1
>>> pandas.concat([df1, df2, df3], axis=1) 
     x  y  z 
bar 0.55 0.55 NaN 
foo 0.30 0.40 0.10 
qux NaN 0.30 5.55 
Смежные вопросы