簡體   English   中英

合並Pandas DataFrames的所有列

[英]Merging All Columns of Pandas DataFrames

我有很多股票的熊貓數據框。 它們都具有以下形式:

df_asset = pd.DataFrame(data=np.random.random((5,4)), index=[0, 1, 2, 3, 4], columns=['Open', 'High', 'Low', 'Close'])

我已經將資產名稱及其數據框架存儲在字典中:

stock_data = {'AAPL' : df_AAPL, 'CSCO' : df_CSCO ...}

我想加入所有這些DataFrame以創建以下形式的MultiIndexed DataFrame:

df = pd.DataFrame(data=np.random.random((15,4)), index=pd.MultiIndex.from_product([list(range(1,6)), ['AAPL', 'CSCO', 'AMZN']]), columns=['Open', 'High', 'Low', 'Close'])

什么是最優雅(且有望高效)的方法?

謝謝你的幫助,

插口

您可以使用以下命令將DataFrames的字典 dfs 連接到單個DataFrame中

df = pd.concat(dfs)

df將把dict鍵用作MultiIndex級別。


例如,

In [85]: dfs = {'AAPL': df_asset, 'CSCO': df_asset}

In [86]: df = pd.concat(dfs); df
Out[86]: 
            Open      High       Low     Close
AAPL 0  0.100276  0.769425  0.060993  0.831183
     1  0.251792  0.336571  0.976984  0.237506
     2  0.611914  0.029576  0.329525  0.203794
     3  0.527770  0.723468  0.887708  0.231006
     4  0.965805  0.508156  0.260214  0.063260
CSCO 0  0.100276  0.769425  0.060993  0.831183
     1  0.251792  0.336571  0.976984  0.237506
     2  0.611914  0.029576  0.329525  0.203794
     3  0.527770  0.723468  0.887708  0.231006
     4  0.965805  0.508156  0.260214  0.063260

要按照您在問題中發布的順序獲取索引級別,請使用swaplevel后跟sort_index

In [112]: df.swaplevel().sort_index()
Out[112]: 
            Open      High       Low     Close
0 AAPL  0.100276  0.769425  0.060993  0.831183
  CSCO  0.100276  0.769425  0.060993  0.831183
1 AAPL  0.251792  0.336571  0.976984  0.237506
  CSCO  0.251792  0.336571  0.976984  0.237506
2 AAPL  0.611914  0.029576  0.329525  0.203794
  CSCO  0.611914  0.029576  0.329525  0.203794
3 AAPL  0.527770  0.723468  0.887708  0.231006
  CSCO  0.527770  0.723468  0.887708  0.231006
4 AAPL  0.965805  0.508156  0.260214  0.063260
  CSCO  0.965805  0.508156  0.260214  0.063260

暫無
暫無

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

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