Die Methode pandas.DataFrame.query()
ist von großem Nutzen für das (vor / nach) -Filtern von Daten beim Laden oder Plotten. Es ist besonders praktisch für die Verkettung von Methoden.
Ich möchte oft dieselbe Logik auf eine pandas.Series
anwenden, z. nachdem Sie eine Methode wie df.value_counts
ausgeführt haben, die ein pandas.Series
zurückgibt.
Nehmen wir an, es gibt eine riesige Tabelle mit den Spalten Player, Game, Points
und ich möchte ein Histogramm der Spieler mit mehr als 14 mal 3 Punkten zeichnen. Zuerst muss ich die Punkte jedes Spielers ( groupby -> agg
) summieren, die eine Serie von ~ 1000 Spielern und ihre Gesamtpunkte zurückgeben. Wenn man die .query
Logik anwendet, sieht das etwa so aus:
Die einzigen Lösungen, die ich finde, zwingen mich zu einer unnötigen Zuweisung und brechen die Methodenverkettung:
%Vor%Sowohl die Verkettung von Methoden als auch die Abfragemethode helfen dabei, den Code leserlich zu halten, während die Filterung von Teilmengen sehr schnell unordentlich werden kann.
%Vor%Bitte hilf mir aus meinem Dilemma! Danke
IIUC können Sie query("Points > 100")
hinzufügen:
Eine andere Lösung ist Auswahl nach Callable :
%Vor%Bearbeitete Antwort nach bearbeiteter Frage:
%Vor%Warum konvertieren Sie nicht von Series zu Dataframe, führen Sie die Abfrage durch und konvertieren Sie sie dann zurück.
%Vor% Hier wird .to_frame()
in DataFrame konvertiert, während der nachgestellte ["Points"]
in Serie konvertiert wird.
Die Methode .query()
kann dann konsistent verwendet werden, unabhängig davon, ob das Pandas-Objekt eine oder mehrere Spalten hat.
Tags und Links python pandas dataframe method-chaining series