2017-09-12 3 views
2

So .loc und .iloc sind nicht Ihre typischen Funktionen. Sie verwenden [und] irgendwie, um die Argumente zu umgeben, so dass sie mit der normalen Array-Indizierung vergleichbar sind. Allerdings habe ich das noch nie in einer anderen Bibliothek gesehen (die ich mir vorstellen kann, vielleicht numpig wie etwas, das ich ausbleiche), und ich habe keine Ahnung, wie es technisch im Python-Code funktioniert.Warum/Wie verwenden Pandas eckige Klammern mit .loc und .iloc?

Sind die Klammern in diesem Fall nur syntaktischer Zucker für einen Funktionsaufruf? Wenn ja, wie würde man dann eine willkürliche Funktion verwenden, Klammern statt Klammern? Was ist das Besondere an ihrer Verwendung/Definition Pandas?

Danke.

+1

Die eckigen Klammern sind syntaktischer Zucker für die spezielle Methode '__getitem__'. Alle Objekte können diese Methode in ihrer Klassendefinition implementieren und anschließend mit den eckigen Klammern arbeiten. –

+0

Sehen Sie sich die [Pandas-Dokumentation zur Indizierung und Auswahl] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-and-selecting-data) an. –

+0

Sie können sich den Quelltext [hier] (https://github.com/pandas-dev/pandas/blob/master/pandas/core/indexing.py) ansehen, der alles in Python geschrieben ist. Die '__getitem__' Methode ist in' _LocationIndexer' definiert. – roganjosh

Antwort

1

Unter den Abdeckungen verwenden beide die Funktionen __setitem__ und .