我有两个不同的 dfs,我想结合使用:
pd.concat([df1, df2], 1)
最终结果是一个以日期为索引和所有列的 df。
根据 pandas 文档,这应该有效。它正在工作。但现在不是,我不知道为什么。
df1:
gbp_open gbp_high gbp_low gbp_close gbp_volume
date
2017-03-13 0.8217 0.82246 0.81627 0.8216 000
2017-03-10 0.8224 0.82366 0.82055 0.82255 000
2017-03-09 0.82139 0.82364 0.82 0.8212 000
2017-03-08 0.81943 0.82372 0.8186 0.81937 000
2017-03-07 0.817 0.82163 0.8163 0.8168 000
2017-03-06 0.81351 0.81659 0.8132 0.813 000
2017-03-03 0.8147 0.81854 0.8141 0.81468 000
2017-03-02 0.81492 0.81561 0.81264 0.81485 000
2017-03-01 0.80779 0.81402 0.80629 0.80788 000
2017-02-28 0.80403 0.8059 0.80183 0.8039 000
和 df2:
inr_open inr_high inr_low inr_close inr_volume
date
2017-03-13 66.485 66.58 66.11 66.485 000
2017-03-10 66.71 66.77 66.5398 66.6805 000
2017-03-09 66.815 66.853 66.60 66.765 000
2017-03-08 66.625 66.83 66.613 66.6162 000
2017-03-07 66.645 66.695 66.58 66.6647 000
2017-03-06 66.71 66.78 66.60 66.773 000
2017-03-03 66.845 66.885 66.74 66.8451 000
2017-03-02 66.69 66.858 66.67 66.858 000
2017-03-01 66.705 66.89 66.7046 66.7051 000
2017-02-28 66.735 66.808 66.59 66.6932 000
我尝试了几种不同的解决方案,但没有一个能满足我的需要,即在日期上将两者结合起来。
编辑:奇怪的是,我在不同的数据集上使用了几乎完全相同的代码(但操作相同)并且它没有任何问题。
编辑 2:也许这会有所帮助。我使用了 df1.join(df2, how = ‘outer’) 并且效果很好。好吧, 差不多 好了。当我检查任何重复值时,有一个日期显示四个(恰好是昨天 - 这可以解释为什么它是最近的问题)。
这对问题有何影响?
xdf.index.value_counts()
2017-04-24 4
2016-11-14 1
2011-03-28 1
2011-09-19 1
2011-09-13 1
2013-12-25 1
2012-07-12 1
2011-08-08 1
2016-11-22 1
有什么想法吗?
原文由 Zach 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的编辑基本上回答了这个问题:因为你的索引有多个相同的值,如果你想基于索引连接,那么如何对齐索引就存在歧义,所以 pandas 引发了错误:
所以这是可行的,因为索引是唯一的:
但是以下将引发与您相同的错误,因为不清楚第一个数据帧中值为“1”的两个索引中的哪一个应该与第二个数据帧中值为“1”的索引对齐:
尝试执行 df5 会给你 InvalidIndexError: Reindexing only valid with uniquely valued Index objects that you find。