pandas.Series — не цепочка .loc, а один маск.Цепочка выглядит аккуратно, но ломается на реальных данных и легко даёт неожиданные результаты:
s = pd.Series([10, 15, 20, 25, 30])
s
.loc[s > 20]
.loc[s % 2 == 1]
Проблема в том, что второй
.loc снова смотрит на исходный s, а не на уже отфильтрованный результат. Логика разъезжается.Надёжнее собрать всё в одно выражение:
s = pd.Series([10, 15, 20, 25, 30])
mask = (s > 20) & (s % 2 == 1)
result = s.loc[mask]
Одна маска = одна точка истины.
Проще дебажить. Меньше сюрпризов при росте кода.
👉 @PythonPortal
