- Если имя столбца равно «Нет», просто верните серию значений по умолчанию.
- Если имя столбца не «Нет», верните этот столбец из кадра данных в виде серии.
Ниже приведен пример для лучшей иллюстрации.
Функция, которую я хочу, имеет следующую сигнатуру.
Код: Выделить всё
import polars as pl
def f(df, colname=None, value=0):
pass
Код: Выделить всё
>>> 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
]
Код: Выделить всё
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()
Другая проблема заключается в том, что приведенный ниже код выполняется успешно, но возвращает кадр данных с формой (1, 1),
Код: Выделить всё
>>> colname = None
>>> value = 0
>>> df.select(pl.when(colname is None).then(pl.lit(value)).otherwise(100))
shape: (1, 1)
┌─────────┐
│ literal │
│ --- │
│ i32 │
╞═════════╡
│ 0 │
└─────────┘
Код: Выделить всё
shape: (3, 1)
┌─────────┐
│ literal │
│ --- │
│ i32 │
╞═════════╡
│ 0 │
│ 0 │
│ 0 │
└─────────┘
Подробнее здесь: https://stackoverflow.com/questions/754 ... me-is-none