- Wenn der Spaltenname „Keine“ lautet, geben Sie einfach eine Reihe von Standardwerten zurück.
- Wenn der Spaltenname nicht „Keine“ ist, geben Sie diese Spalte aus dem Datenrahmen als Reihe zurück.
Unten ist ein Beispiel zur besseren Veranschaulichung.
Die Funktion, die ich möchte, hat die folgende Signatur.
Code: Select all
import polars as pl
def f(df, colname=None, value=0):
pass
Code: Select all
>>> df = pl.DataFrame({"a": [1, 2, 3], "b": [2, 3, 4]})
>>> f(df)
shape: (3,)
Series: '' [i64]
[
0
0
0
]
>>> f(df, "a")
shape: (3,)
Series: '' [i64]
[
1
2
3
]
Code: Select all
def f(df, colname=None, value=0):
return df.select(pl.when(colname is None).then(pl.lit(value)).otherwise(pl.col(colname))).to_series()
Ein weiteres Problem besteht darin, dass der folgende Code erfolgreich ausgeführt wird, aber einen Datenrahmen mit der Form (1, 1) zurückgibt.
Code: Select all
>>> colname = None
>>> value = 0
>>> df.select(pl.when(colname is None).then(pl.lit(value)).otherwise(100))
shape: (1, 1)
┌─────────┐
│ literal │
│ --- │
│ i32 │
╞═════════╡
│ 0 │
└─────────┘
Code: Select all
shape: (3, 1)
┌─────────┐
│ literal │
│ --- │
│ i32 │
╞═════════╡
│ 0 │
│ 0 │
│ 0 │
└─────────┘
Mobile version