loc выбирает по меткам index/columns (включительные срезы по label); iloc — по целочисленным позициям (как NumPy, конец среза исключён).
Разбор
- Смешение:
df.loc[i, "col"] vs df.iloc[0, 1].
- После фильтра index может быть «дырявым» —
iloc[0] ≠ loc[0].
at/iat — скалярный быстрый доступ.
- Chained
df[...][...] часто ведёт к SettingWithCopy.
Итог
loc = labels; iloc = позиции; после filter предпочитайте явную индексацию.