![](/img/trans.png)
[英]Merging two dataframes in Pandas/Python keeping all columns from dataframe 1
[英]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.