如何串联多索引列数据框

时间:2019-05-27 21:47:41

标签: python pandas dataframe merge multi-index

我想进行一些复杂的多索引列pandas数据帧串联。此连接由以下格式的两个或多个数据帧组成:

indicator     eps2p                         ... logreturn                      
stock         TIET11     ALSC3     ALPA4    ...   TIET11  ALSC3 ALPA4    

date
2000-01-31       NaN       NaN       NaN    ...     NaN   NaN   NaN  
2000-02-01       100       NaN       NaN    ...     NaN   NaN   NaN  
2000-02-02       101       NaN       NaN    ...     NaN   NaN   NaN  
2000-02-03       104       NaN       NaN    ...     NaN   NaN   NaN 
2000-02-04       NaN       NaN       NaN    ...     NaN   NaN   NaN 

现在,想象一下,我还有两个以上的数据框,但是我没有eps2plogreturn,而是ev2ebitdalogreturn,还有{{ ev2ebit列级别的1}}和logreturn。同样,假设并非所有数据框在每个指标下都具有完全相同的indicator列。最后,还要考虑在同一stock下具有相同stock的两个数据帧不一定具有完全相同的索引,即,我可以有两个带有indicator列的数据帧,但具有互补的数据:

logreturn/TIET11
DATAFRAME #1                   
              logreturn     
              TIET11        
date                        
2000-01-31    100       
2000-02-01    NaN       
2000-02-02    102       

考虑到这一点,我如何将这些数据帧合并为一个具有所有唯一指示符列(DATAFRAME #2 logreturn TIET11 date 2000-01-31 100 2000-02-01 101 2000-02-02 NaN eps2pev2ebit)和公共列({ {1}}),以确保我没有任何串联数据帧中的重复数据或丢失数据?

1 个答案:

答案 0 :(得分:1)

您可以使用update进行此操作:

In [11]: df1.update(df2)

In [12]: df1
Out[12]:
           logreturn
              TIET11
date
2000-01-31     100.0
2000-02-01     101.0
2000-02-02     102.0

由于df1中缺少列,因此您可以首先使用联合索引:

res = df1.reindex(columns=df3.columns | df4.columns)
res.update(df2)

注意:您可能还需要重新索引索引。