【问题标题】:Merge/Join/Append two Pandas DataFrames with MultiIndex columns by both index and cols通过索引和列合并/加入/附加两个带有 MultiIndex 列的 Pandas DataFrame
【发布时间】:2014-01-09 06:17:39
【问题描述】:

我一直在用头撞桌子,不知道有没有办法,也许我正在尝试一些不可能的事情。

我有两个带有 MultiIndex 列(三个级别)和时间索引(单级)的 DataFrame。第一个是这样的:

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

我尝试了多种方法,包括使用 Merge 和 Join,但无法正常工作。

有什么想法吗?提前致谢。

附:如果有任何帮助,我可以发布用于生成上述两个 DF 的代码,但它有点长。但无论如何,我正在寻找一个通用的答案,列的确切名称或行的索引是无关紧要的(甚至可能是整数的索引)。

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    试试pandas.DataFrame.update

    DataFrame.update(other, join='left', overwrite=True,
                     filter_func=None, raise_conflict=False)
    

    使用传递的 DataFrame 中的非 NA 值修改 DataFrame。对齐索引

    【讨论】:

    • 在 v0.13.1 中,这不支持除 left 之外的任何其他连接方法...如果它有“outer”,这就是我正在寻找的东西!
    猜你喜欢
    • 2021-04-14
    • 2021-06-20
    • 2017-10-12
    • 2021-05-29
    • 2020-06-15
    • 2017-09-02
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多