簡體   English   中英

根據數組連接熊貓數據框

[英]Join Pandas Dataframes according to array

我正在嘗試將幾個數據框連接在一起。 這些dataframes的名稱的列表存儲在另一個名為數據幀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列中的元素?

提前謝謝了!

您可以定義一個空的DataFrame並將所有其他數據DataFrame附加到它。 請參閱以下示例:

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

使用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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM