簡體   English   中英

合並具有多個索引列的DataFrame

[英]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和最后的排序MultiIndexDataFrame.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.

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