python - 比较 pandas.Series 在不同顺序时的相等性

标签 python pandas

Pandas 在应用加法和减法等二元运算符之前会自动对齐 Series 对象的数据索引,但在检查相等性时不会这样做。为什么会这样,我该如何克服它?

考虑以下示例:

In [15]: x = pd.Series(index=["A", "B", "C"], data=[1,2,3])

In [16]: y = pd.Series(index=["C", "B", "A"], data=[3,2,1])

In [17]: x
Out[17]:
A    1
B    2
C    3
dtype: int64

In [18]: y
Out[18]:
C    3
B    2
A    1
dtype: int64

In [19]: x==y
Out[19]:
A    False
B     True
C    False
dtype: bool

In [20]: x-y
Out[20]:
A    0
B    0
C    0
dtype: int64

我正在使用 pandas 0.12.0。

最佳答案

您可以通过以下方式克服它:

In [5]: x == y.reindex(x.index)
Out[5]: 
A    True
B    True
C    True
dtype: bool

In [6]: x.sort_index() == y.sort_index()
Out[6]: 
A    True
B    True
C    True
dtype: bool

这里解释了“为什么”:https://github.com/pydata/pandas/issues/1134#issuecomment-5347816

更新:有一个讨论此问题的问题 (https://github.com/pydata/pandas/issues/1134) 和一个修复此问题的 PR (https://github.com/pydata/pandas/pull/6860)

关于python - 比较 pandas.Series 在不同顺序时的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22983523/

相关文章:

python - 如何使用 Pandas 将数据从一行移动到另一行

python - 如何在pygame中找到用户输入位置上的按钮并更改其颜色?

python - 不要跳过 pandas.read_excel() 中的空白行

Python 和 Pandas - 移动平均线交叉

python - 数据透视表和合并列与标题

python - 正则表达式删除python中的特定单词

python - 使用 Python 将 SQL 查询结果存储到 Redis 中?

python - 使用 kv 文件和 python 类初始化小部件之间的区别

python - 检测 Pandas 中列之间的值交叉

python - 根据原始数据框列数创建多个数据框