Ответ 1
Решение, связанное с @JohnE, заключается в использовании квадратных скобок [0]
вместо (0)
с iloc
.
Дополнительная информация после прохождения через какой-то код pandas.
s1.iloc
делает iloc
похожим на метод. Но это атрибут, а значение атрибута _iLocIndexer
. _iLocIndexer
вызывается с аргументами, и он возвращает копию, игнорируя любые аргументы или kwargs (см. pandas.core.indexing._NDFrameIndexer. вызов в pandas). Вот почему s1.iloc(0)
является действительным вызовом.
Когда s1.iloc[0]
вызывается с квадратными скобками, создается экземпляр _iLocIndexer
, и вызов оператора []
приводит к вызову метода iLocIndexer
`getitem '.
То же самое верно для других индексаторов - loc
, ix
, at
и iat
. Эти индексы устанавливаются с помощью setattr
в методе класса pandas.core.generic.NDFrame._create_indexer.