我一直在一个严重依赖 pandas 的复杂应用程序中追踪一个难以捉摸的错误,并最终将其追溯到系列排序问题。具有不同顺序但兼容的索引的系列不会通过比较运算符自动对齐。这与算术运算符的行为不同,据我所知,它没有记录在案。修复很简单 - 只需重新索引即可。我的问题是为什么 pandas 中存在这种行为 - 这是一个错误吗?
>>> x = pd.Series({'A':1,'B':2,'C':3}, index=['A','B','C'])
>>> y = pd.Series({'A':1,'B':2,'C':3}, index=['B','C','A'])
>>> x/y
A 1
B 1
C 1
dtype: float64
>>> x==y
A False
B False
C False
dtype: bool
>>> x.eq(y)
A False
B False
C False
dtype: bool
>>> x==y.reindex(x.index)
A True
B True
C True
dtype: bool
最佳答案
请参阅此处的讨论:https://github.com/pydata/pandas/issues/1134
这原本是一个功能,尽管不再需要支持的原因(Series 已经有一段时间不再是 ndarray 子类了)
我不久前确实尝试过解决这个问题,但它引发了很多问题。一如既往,希望有一份文档说明来澄清
关于python - 为什么 pandas 比较运算符不在索引上对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284415/