Wie schreibe ich eine Abfrage wie (A oder B) und C in Polars?Python

Python-Programme
Anonymous
 Wie schreibe ich eine Abfrage wie (A oder B) und C in Polars?

Post by Anonymous »

Ich habe erwartet, dass entweder a oder b 0,0 sein würden (nicht NaN) und c immer 0,0 sein würde. In der Polars-Dokumentation heißt es, | zu verwenden als „oder“ und & als „und“. Ich glaube, ich habe die richtige Logik:
(((a not Nan) or (b not Nan)) and (c not NaN))
Allerdings ist die Ausgabe falsch.

Code: Select all

import polars as pl
import numpy as np

df = pl.DataFrame(
data={
"a": [0.0, 0.0,    0.0,    0.0,    np.nan, np.nan, np.nan],
"b": [0.0, 0.0,    np.nan, np.nan, 0.0,    0.0,    np.nan],
"c": [0.0, np.nan, 0.0,    np.nan, 0.0,    np.nan, np.nan]
}
)

df.with_columns(
((pl.col('a').is_not_nan() | pl.col('b').is_not_nan())
& pl.col('c').is_not_nan()).alias('Keep'))
df_actual = df.filter(pl.col("Keep") is True)

print("df\n", df)
print("df_expect\n", df_expect)
print("df_actual\n", df_actual)
df

Code: Select all

 shape: (7, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 │
╞═════╪═════╪═════╡
│ 0.0 ┆ 0.0 ┆ 0.0 │
│ 0.0 ┆ 0.0 ┆ NaN │
│ 0.0 ┆ NaN ┆ 0.0 │
│ 0.0 ┆ NaN ┆ NaN │
│ NaN ┆ 0.0 ┆ 0.0 │
│ NaN ┆ 0.0 ┆ NaN │
│ NaN ┆ NaN ┆ NaN │
└─────┴─────┴─────┘
df_expect

Code: Select all

 shape: (3, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 │
╞═════╪═════╪═════╡
│ 0.0 ┆ NaN ┆ 0.0 │
│ NaN ┆ 0.0 ┆ 0.0 │
│ 0.0 ┆ 0.0 ┆ 0.0 │
└─────┴─────┴─────┘
df_actual

Code: Select all

 shape: (0, 3)
┌─────┬─────┬─────┐
│ a   ┆ b   ┆ c   │
│ --- ┆ --- ┆ --- │
│ f64 ┆ f64 ┆ f64 │
╞═════╪═════╪═════╡
└─────┴─────┴─────┘

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post