Gibt es eine Abfrage-Methode oder ähnliches für pandas-Serie (pandas.Serie.query())?

Den pandas.DataFrame.query() Methode ist der große Verwendung für (pre/post)-filtern von Daten beim laden oder der Darstellung. Es kommt besonders nützlich für die Verkettung von Methoden.

Ich finde mich oft zu wollen, gilt die gleiche Logik auf eine pandas.Series, z.B. nach einer Methode, wie df.value_counts das gibt einen pandas.Series.

Beispiel

Vermuten lässt, gibt es eine riesige Tabelle mit den Spalten Player, Game, Points und ich möchte plot eines Histogramms der Spieler mit mehr als 14 mal 3 Punkte. Ich muss mir erstmal um die Summe der Punkte der einzelnen Spieler (groupby -> agg) wird wieder eine Reihe von ~1000 Spieler und Ihre Allgemeine Punkte. Die Anwendung der .query Logik würde es in etwa so Aussehen:

df = pd.DataFrame({
    'Points': [random.choice([1,3]) for x in range(100)], 
    'Player': [random.choice(["A","B","C"]) for x in range(100)]})

(df
     .query("Points == 3")
     .Player.values_count()
     .query("> 14")
     .hist())

Nur Lösungen finde ich Kraft mich tun, um eine unnötige Belegung und brechen die Verkettung von Methoden:

(points_series = df
     .query("Points == 3")
     .groupby("Player").size()
points_series[points_series > 100].hist()

Verkettung von Methoden sowie die query-Methode helfen, damit der code lesbar ist inzwischen ist die subsetting-Filterung kann schmutzig ziemlich schnell.

# just to make my point :)
series_bestplayers_under_100[series_prefiltered_under_100 > 0].shape

Bitte helft mir aus meinem dilemma! Dank

  • Ich bin mir nicht sicher, ALSO ist der beste Ort für diese Frage, denn es ist eine Frage für die Entwickler der Bibliothek haben, ist es besser zu posten auf github IMO
  • Geändert die Frage-Titel mehr SO, Wie
InformationsquelleAutor dmeu | 2016-10-21
Schreibe einen Kommentar