通过索引和列,将两个带有多级索引列的Pandas数据框合并/连接/追加。

9
我很困惑这个问题,已经试图解决但一无所获,也许我在尝试一些不可能的事情。有两个拥有多级列索引(三级)和时间索引(单级)的数据框。第一个数据框如下:
border           a-b                 c-d
from               a         b         c
to                 b         a         d
2009-03-01 -0.778346 -0.928997       NaN
2009-03-02 -1.352559  1.247335       NaN
2009-03-03 -0.967939  0.432638       NaN
2009-03-04  0.786094 -2.209559       NaN
2009-03-05 -0.001338  1.084152       NaN
2009-03-06  1.163334       NaN       NaN
2009-03-07 -0.587593       NaN       NaN
2009-03-08  0.118469       NaN       NaN
2009-03-09       NaN       NaN -1.272959
2009-03-10       NaN       NaN -1.207129
2009-03-11       NaN       NaN  0.244019

我将在这个DF中添加以下内容:
border           a-b
from               a
to                 b
2009-03-09  1.243296
2009-03-10 -0.049870
2009-03-11  1.599999

考虑到行和列索引,结果应为:
border           a-b                 c-d
from               a         b         c
to                 b         a         d
2009-03-01 -0.778346 -0.928997       NaN
2009-03-02 -1.352559  1.247335       NaN
2009-03-03 -0.967939  0.432638       NaN
2009-03-04  0.786094 -2.209559       NaN
2009-03-05 -0.001338  1.084152       NaN
2009-03-06  1.163334       NaN       NaN
2009-03-07 -0.587593       NaN       NaN
2009-03-08  0.118469       NaN       NaN
2009-03-09  1.243296       NaN -1.272959
2009-03-10 -0.049870       NaN -1.207129
2009-03-11  1.599999       NaN  0.244019

我尝试了多种方法,包括使用合并和连接,但无法使其正常工作。
有任何想法吗?提前感谢您。
附注:如果需要帮助,我可以发布用于生成上述两个数据框的代码,但它有点长。但无论如何,我正在寻找一般性的答案,行的确切名称或索引是不相关的(甚至可以是整数索引)。
1个回答

6
尝试使用pandas.DataFrame.update函数。具体请参见此处
DataFrame.update(other, join='left', overwrite=True,
                 filter_func=None, raise_conflict=False)

使用传递的DataFrame中的非NA值来就地修改DataFrame。根据索引对齐。

1
在v0.13.1中,除了left之外,它不支持任何其他连接方法... 如果有"outer",这将是我要寻找的完美方法! - PhilMacKay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接