Подтвердить что ты не робот

Что происходит, когда вы сравниваете 2 pandas Series

Я столкнулся с неожиданным поведением в pandas при сравнении двух серий. Я хотел знать, если это предназначено или ошибка.

предположим, что I:

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value')

x > y

дает:

a     True
b    False
c     True
d    False
e    False
f    False
Name: Value, dtype: bool

что я не хотел. Очевидно, я ожидал, что индексы выстроятся в линию. Но я должен явно выстроить их для получения желаемых результатов.

x > y.reindex_like(x)

дает:

a     True
b     True
c     True
d    False
e    False
f    False
Name: Value, dtype: bool

Это то, что я ожидал.

Что хуже, если я:

x + y

Я получаю:

a    1
b    1
c    1
d    2
e    2
f    2
Name: Value, dtype: int64

Поэтому при работе индексы выстраиваются в линию. При сравнении они этого не делают. Является ли мое наблюдение точным? Это предназначено для какой-то цели?

Спасибо,

-PiR

4b9b3361

Ответ 1

Ошибка или нет. Я бы предложил сделать кадр данных и сравнить серию внутри фрейма данных.

import pandas as pd
x = pd.Series([1, 1, 1, 0, 0, 0], index=['a', 'b', 'c', 'd', 'e', 'f'], name='Value_x')
y = pd.Series([0, 2, 0, 2, 0, 2], index=['c', 'f', 'a', 'e', 'b', 'd'], name='Value_y')

df = pd.DataFrame({"Value_x":x, "Value_y":y})
df['Value_x'] > df['Value_y']

Out[3]:

a     True
b     True
c     True
d    False
e    False
f    False
dtype: bool