根据数组连接Pandas数据框

0 投票
2 回答
1480 浏览
提问于 2025-04-18 04:20

我正在尝试把几个数据表合并在一起。这些数据表的名字被存储在另一个数据表中,叫做 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) 继续合并,依此类推,直到把所有的都合并完。请问我该如何引用 companies 数据表中 Symbols 列的元素,以实现这个目标呢?

非常感谢!

2 个回答

0

使用 pd.concat,这个工具是专门用来合并多个数据框的:

所以对于你的例子,只需要把值变成一个列表,然后再进行合并:

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]
0

你可以先创建一个空的 DataFrame,然后把其他的数据框都添加到这个空框里。下面是一个例子:

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

撰写回答