我想进行一些复杂的多索引列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
现在,想象一下,我还有两个以上的数据框,但是我没有eps2p
和logreturn
,而是ev2ebitda
和logreturn
,还有{{ 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
,eps2p
和ev2ebit
)和公共列({ {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)
注意:您可能还需要重新索引索引。