Wie extrahiere ich alle doppelten Zeilen mit einer Bedingung in einem Polars -Datenrahmen richtig?Python

Python-Programme
Anonymous
 Wie extrahiere ich alle doppelten Zeilen mit einer Bedingung in einem Polars -Datenrahmen richtig?

Post by Anonymous »

Bei einem Polars -Datenframe wird ich alle doppelten Zeilen extrahieren und gleichzeitig eine zusätzliche Filterbedingung anwenden, zum Beispiel: < /p>

Code: Select all

import polars as pl

df = pl.DataFrame({
"name": ["Alice", "Bob", "Alice", "David", "Eve", "Bob", "Frank"],
"city": ["NY", "LA", "NY", "SF", "LA", "LA", "NY"],
"age": [25, 30, 25, 35, 28, 30, 40]
})

# Trying this:
df.filter((df.is_duplicated()) & (pl.col("city") == "NY"))  # error
Dies führt jedoch zu einem Fehler:

SchemaError: Die Serie von Typ -Objekten kann jedoch nicht packen. Realität, es ist eine booleale -serie.

Code: Select all

df.filter((pl.col("city") == "NY") & (df.is_duplicated()))  # works!
korrekt Ausgänge:

Code: Select all

shape: (2, 3)
┌───────┬──────┬─────┐
│ name  ┆ city ┆ age │
│ ---   ┆ ---  ┆ --- │
│ str   ┆ str  ┆ i64 │
╞═══════╪══════╪═════╡
│ Alice ┆ NY   ┆ 25  │
│ Alice ┆ NY   ┆ 25  │
└───────┴──────┴─────┘
< /code>
Ich verstehe, dass der optimale Ansatz beim Filtern für Duplikate basierend auf einer Teilmenge von Spalten darin bestehtdf.filter((pl.struct(df.columns).is_duplicated()) & (pl.col("city") == "NY"))  # works< /code>
, was mit der zusätzlichen Filterbedingung gut funktioniert.df.filter(df.drop("col1", "col2", "col3").is_duplicated())
Was gut funktioniert und viel bequemer ist, als alle 37 Spalten in einem pl.struct zu schreiben. Dies bricht jedoch beim Hinzufügen einer zusätzlichen Filterbedingung nach rechts, , jedoch nicht links :

Code: Select all

df.filter(
(df.drop("col1", "col2", "col3").is_duplicated()) & (pl.col("col5") == "something")
)  # breaks!

df.filter(
(pl.col("col5") == "something") & (df.drop("col1", "col2", "col3").is_duplicated())
)  # works!
Warum ist die Reihenfolge von Prädikaten (Serie & Expression vs Expression & Serie) in .Filter () In diesem Fall ist dieses beabsichtigte Verhalten in Polaren oder einem Fehler?>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post