我想制作一个有点复杂的多索引列 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
现在,假设我还有两个数据帧,就像上面的数据帧一样,但我有 ev2ebitda
和 ev2ebitda
,而不是 eps2p
和 logreturn
indicator
列级别中的 logreturn
、ev2ebit
和 logreturn
。另外,想象一下并非所有数据帧的每个指标下都具有完全相同的 stock
列。最后,还要考虑到同一 indicator
下具有相同 stock
的两个数据帧不一定具有完全相同的索引,即,我可以有两个具有列 的数据帧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
和 ev2ebitda
code>)和常见的(logreturn
)的方式,我没有重复的数据或从任何连接的数据帧丢失数据?
最佳答案
您可以使用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)
注意:您可能还需要重新索引索引。
关于python - 如何连接多索引列数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56332748/