Предупреждение: присваивание может идти в копию среза, а не в исходный df. Лечится явным .loc[...] =, copy(), и в новых версиях Copy-on-Write режимом.
Разбор
- Антипаттерн:
df[df.x>0]["y"] = 1.
- Паттерн:
df.loc[df.x>0, "y"] = 1.
- Цепочки фильтров без loc опасны.
- Тесты на побочные эффекты мутаций.
Итог
Пишите в данные через loc/iat или работайте с явной копией.