根据数组连接Pandas数据框
我正在尝试把几个数据表合并在一起。这些数据表的名字被存储在另一个数据表中,叫做 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)