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
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!
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())
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!