gpt4 book ai didi

python - Pandas Concat 给出 "InvalidIndexError: Reindexing only valid with uniquely valued Index objects"错误

转载 作者:行者123 更新时间:2023-12-05 03:09:09 25 4
gpt4 key购买 nike

我有两个不同的 dfs,我想结合使用:

pd.concat([df1, df2], 1)

最终结果是一个以日期为索引和所有列的 df。

According to pandas documentation ,这应该有效。它正在工作。但现在不是了,我不知道为什么。

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

有什么想法吗?

最佳答案

你的编辑基本上回答了这个问题:因为你的索引有多个相同的值,如果你想基于索引连接,那么关于如何对齐索引存在歧义,所以 pandas 引发了错误:

所以这是可行的,因为索引是唯一的:

df1 = pd.DataFrame(index=[0,1,2],columns=['A'],data=[19.,2.,-4.])
df2 = pd.DataFrame(index=[2,1,0],columns=['B'],data=[17.,28.,9.])
df3 = pd.concat(objs=[df1,df2],axis=1)

但是以下内容会引发与您相同的错误,因为不清楚第一个数据帧中值为“1”的两个索引中的哪一个应该与第二个数据帧中值为“1”的索引对齐:

df3 = pd.DataFrame(index=[1,0,1],columns=['A'],data=[19.,2.,-4.])
df4 = pd.DataFrame(index=[0,1,1],columns=['B'],data=[17.,28.,9.])
df5 = pd.concat(objs=[df3,df4],axis=1)

尝试执行 df5 会给你 InvalidIndexError: Reindexing only valid with uniquely valued Index objects that you find.

关于python - Pandas Concat 给出 "InvalidIndexError: Reindexing only valid with uniquely valued Index objects"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com