Рассмотрим эту простую настройку:
x = pd.Series([1, 2, 3], index=list('abc'))
y = pd.Series([2, 3, 3], index=list('bca'))
x
a 1
b 2
c 3
dtype: int64
y
b 2
c 3
a 3
dtype: int64
Как видите, индексы одинаковы, просто в другом порядке.
Теперь рассмотрим простое логическое сравнение с использованием оператора равенства (==
):
x == y
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Это вызывает ValueError
, скорее всего, потому что индексы не совпадают. С другой стороны, вызов эквивалентного оператора eq
работает:
x.eq(y)
a False
b True
c True
dtype: bool
OTOH, метод оператора работает, если y
сначала переупорядочен...
x == y.reindex_like(x)
a False
b True
c True
dtype: bool
Я понял, что сравнение функций и операторов должно делать то же самое, при прочих равных условиях. Что делает eq
, а оператор сравнения - нет?