Sie können in der Welt eines einzelnen loc
bleiben, indem Sie die Indexwerte erhalten, die Sie benötigen, indem Sie diesen bestimmten Index mit Positionen aufteilen.
Geben Sie das Update für Pandas 0,20.0 und die Einstellung an von .ix
, ich frage mich, was der effizienteste Weg, um das gleiche Ergebnis mit den verbleibenden .loc
und .iloc
zu erhalten. Ich habe gerade diese Frage beantwortet, aber die zweite Option (nicht mit .ix
) scheint ineffizient und ausführlich.
Snippet:
%Vor%Ist dies der richtige Weg, um sowohl die bedingte als auch die Indexpositionsfilterung zu verwenden?
Sie können in der Welt eines einzelnen loc
bleiben, indem Sie die Indexwerte erhalten, die Sie benötigen, indem Sie diesen bestimmten Index mit Positionen aufteilen.
Geben Sie das Update für Pandas 0,20.0 und die Einstellung an von %code% , ich frage mich, was der effizienteste Weg, um das gleiche Ergebnis mit den verbleibenden %code% und %code% zu erhalten. Ich habe gerade diese Frage beantwortet, aber die zweite Option (nicht mit %code% ) scheint ineffizient und ausführlich.
Snippet:
%Vor%Ist dies der richtige Weg, um sowohl die bedingte als auch die Indexpositionsfilterung zu verwenden?
Im Allgemeinen würden Sie es vorziehen, verkettete Indizierung in Pandas zu vermeiden (obwohl Sie eigentlich genau zwei verschiedene Indizierungsmethoden verwenden). Sie können Ihren Datenrahmen nicht auf diese Weise ändern (Details in der docs ), und in den Dokumenten wird die Leistung als weiterer Grund angeführt (einmaliges Indizieren oder zweimaliges Indizieren).
Letzteres ist normalerweise unbedeutend (bzw. eher kein Flaschenhals in Ihrem Code) und scheint tatsächlich nicht der Fall zu sein (zumindest im folgenden Beispiel):
%Vor%Bottom line: Wenn Sie %code% wirklich vermeiden möchten und keine Werte in Ihrem Datenrahmen ändern möchten, verwenden Sie einfach die verkettete Indizierung. Auf der anderen Seite (die "richtige", aber wohl unordentlichere Methode), wenn Sie Werte ändern müssen, tun Sie %code% mit %code% oder %code% mit ganzzahligen Schichten von %code% oder %code% .
Wie wäre es, dies in eine zweistufige Indexierung zu zerlegen:
%Vor%oder sogar:
%Vor%Im Allgemeinen würden Sie es vorziehen, verkettete Indizierung in Pandas zu vermeiden (obwohl Sie eigentlich genau zwei verschiedene Indizierungsmethoden verwenden). Sie können Ihren Datenrahmen nicht auf diese Weise ändern (Details in der docs ), und in den Dokumenten wird die Leistung als weiterer Grund angeführt (einmaliges Indizieren oder zweimaliges Indizieren).
Letzteres ist normalerweise unbedeutend (bzw. eher kein Flaschenhals in Ihrem Code) und scheint tatsächlich nicht der Fall zu sein (zumindest im folgenden Beispiel):
%Vor% Bottom line: Wenn Sie .ix
wirklich vermeiden möchten und keine Werte in Ihrem Datenrahmen ändern möchten, verwenden Sie einfach die verkettete Indizierung. Auf der anderen Seite (die "richtige", aber wohl unordentlichere Methode), wenn Sie Werte ändern müssen, tun Sie .iloc
mit np.where()
oder .loc
mit ganzzahligen Schichten von df.index
oder df.columns
.