Pandas: Ersatz für .ix

8

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?

    
pshep123 08.05.2017, 02:43
quelle

3 Antworten

2
___ qstnhdr ___ Pandas: Ersatz für .ix ___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123pandas ___ Pandas ist eine Python-Bibliothek für die Manipulation und Analyse von Panel-Daten, z. multidimensionale Zeitreihen- und Querschnittsdatensätze, die häufig in Statistiken, experimentellen wissenschaftlichen Ergebnissen, Ökonometrie oder Finanzen zu finden sind. WICHTIG: Wenn Sie eine Frage mit diesem Tag stellen, markieren Sie bitte Ihre Fragen (in dieser Reihenfolge): [tag: python]; [tag: pandas]; [Etikett: Datenrahmen] / [Etikett: Serie]; (optional) [tag: groupby] / [tag: merge] / etc., abhängig von Ihren spezifischen Anforderungen. ___ antwort43839753 ___

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.

%Vor%     
___ tag123indexing ___ Indizierung von Datenstrukturen ist eine allgemeine Technik, um die Geschwindigkeit von Datensuchen zu verbessern. ___ qstntxt ___

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?

    
___ answer43843483 ___

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% .

    
___ answer43839059 ___

Wie wäre es, dies in eine zweistufige Indexierung zu zerlegen:

%Vor%

oder sogar:

%Vor%     
___
piRSquared 08.05.2017, 04:28
quelle
3

Wie wäre es, dies in eine zweistufige Indexierung zu zerlegen:

%Vor%

oder sogar:

%Vor%     
Psidom 08.05.2017 02:52
quelle
3

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 .

    
Ken Wei 08.05.2017 08:53
quelle

Tags und Links