[英]Merge DataFrame with multi index columns
我從數據幀中的不同來源下載了數據,並希望將它們合並到一個最終的數據幀中。 讓我們用以下示例說明它:
數據框1 (已經有多索引列)
index stockA stockB ...
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 ... ...
...
數據框2 (非多索引列)
index stockA stockB
1/1/19 1.5 3.2
2/1/19 ... ...
...
我想合並兩個dataframe並給dataframe2中的數據指定列名。 索引日期可能在兩個數據框中都不相同,所以我可能需要進行內部合並。
預期的輸出 (多索引列)
index stockA stockB ...
O L H C new_col O L H C new_col
1/1/19 10 15 20 17 1.5 35 30 39 37 3.2
2/1/19 ... ...
...
采用:
print (df1)
stockA stockB
O L H C O L H C
1/1/19 10 15 20 17 35 30 39 37
2/1/19 12 13 26 27 31 50 29 17
print (df2)
stockA stockB
2/1/19 1.5 3.2
3/1/19 1.2 6.2
如有必要,將兩個index
轉換為datetime
:
df1.index = pd.to_datetime(df1.index, format='%d/%m/%y')
df2.index = pd.to_datetime(df2.index, format='%d/%m/%y')
通過Index.intersection
在兩個索引中獲得相同的值:
idx = df1.index.intersection(df2.index)
print (idx)
DatetimeIndex(['2019-01-02'], dtype='datetime64[ns]', freq=None)
在df2
MultiIndex.from_product
中創建MultiIndex
:
df2.columns = pd.MultiIndex.from_product([df2.columns, ['new']])
print (df2)
stockA stockB
new new
2019-01-02 1.5 3.2
2019-01-03 1.2 6.2
通過同時過濾掉DataFrames DataFrame.loc
,通過聯合起來DataFrame.join
和最后的排序MultiIndex
由DataFrame.sort_index
:
df = df1.loc[idx].join(df2.loc[idx]).sort_index(level=0, axis=1)
print (df)
stockA stockB
C H L O new C H L O new
2019-01-02 27 26 13 12 1.5 17 29 50 31 3.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.