根据数组加入Pandas Dataframes

时间:2014-04-26 09:34:13

标签: python pandas dataframe

我正在尝试将多个数据帧连接在一起。这些数据框的名称列表存储在另一个名为companies的数据框中,该数据框显示在下面。

>>> companies
16:   Symbols
0    TUES
1    DRAM
2    NTRS
3    PCBK
4    CRIS
5    PERY
6    IRDM
7   GNCMA
8    IBOC

我的目标是在列表中执行以下操作:joined=TUES.join(DRAM)然后joined=joined.join(NTRS)依此类推。我如何才能引用数据框Symbols的{​​{1}}列的元素才能实现此目标?

非常感谢提前!

2 个答案:

答案 0 :(得分:0)

您可以定义一个空DataFrame并将所有其他数据框附加到其中。请参阅以下示例:

combined_df = pandas.DataFrame()
for df in other_dataframes:
    combined_df = combined_df.append(df)

答案 1 :(得分:0)

使用pd.concat,它用于合并dfs列表:

因此,对于您的示例,只需将值转换为列表然后连续:

joined = pd.concat(list(companies['Symbols']), axis=1)

示例:

In [4]:

import pandas as pd   
import numpy as np
df = pd.DataFrame({'a':np.random.randn(5), 'b':np.random.randn(5)})
df1 = pd.DataFrame({'c':np.random.randn(5), 'd':np.random.randn(5)})
df2 = pd.DataFrame({'e':np.random.randn(5), 'f':np.random.randn(5)})
df_list=[df,df2,df1]
df_list

Out[4]:

[          a         b
 0  0.143116  1.205407
 1 -0.430869  1.429313
 2  0.059810  0.430131
 3  2.554849 -1.450640
 4 -1.127638  0.715323

 [5 rows x 2 columns],           e         f
 0  0.658967  1.150672
 1  0.813355 -0.252577
 2  0.885928  0.970844
 3  0.519375 -1.929081
 4 -0.217152  0.907535

 [5 rows x 2 columns],           c         d
 0 -1.375885  1.422697
 1 -0.870040  0.135527
 2 -0.696600  1.954966
 3  0.494035 -0.727816
 4 -0.367156 -0.216115

 [5 rows x 2 columns]]

In [8]:
# now concatenate the list of dfs, by column
pd.concat(df_list,axis=1)

Out[8]:

          a         b         e         f         c         d
0  0.143116  1.205407  0.658967  1.150672 -1.375885  1.422697
1 -0.430869  1.429313  0.813355 -0.252577 -0.870040  0.135527
2  0.059810  0.430131  0.885928  0.970844 -0.696600  1.954966
3  2.554849 -1.450640  0.519375 -1.929081  0.494035 -0.727816
4 -1.127638  0.715323 -0.217152  0.907535 -0.367156 -0.216115

[5 rows x 6 columns]