我有一个代码,在我更新到Pandas2.0之前一直在工作,我检查了changelog,我看到他们改变了logical_or的行为,但这看起来不完全一样:https://github.com/pandas-dev/pandas/pull/37374,所以这对我来说是一个非常意外的错误。
a = pd.DataFrame({"or":[False,True], "a":[True,True], "b":[True, False]})
np.logical_or(a[["a","b"]], a[2*["or"]])
字符串
在2.0之前,它用于执行元素智能“or”,现在它直接失败于0.o,原因是:
ValueError: cannot reindex on an axis with duplicate labels
型
或者,如果在第二个中提供了两个不同的标签,那么就更糟糕了,因为它不会失败,而是以一种极其不稳定的方式连接两者。
这是Pandas/ numpy上的一个已知错误吗?还是有意为之是否有任何已知的有效替代方案?
1条答案
按热度按时间uxhixvfz1#
上述错误标记为
# GH#42568
(https://github.com/pandas-dev/pandas/pull/42568/files)。实际上,他们更改的代码现在是检查/确保axes["columns"]
中的唯一标签。但是,即使我们更改了其中一个输入 Dataframe 上的标签,如字符串
我们会得到
型
因为看起来2个类似数组的结构在比较时预计具有相同的列标签(如果有的话):
型
一个简单的解决方法是绕过标签检查,只传递值数组:
型