Мой подход к другим полям — заполнить их «пустым значением», соответствующим их типу данных. Что мне следует использовать для структур?
Код: Выделить всё
import polars as pl
df = pl.DataFrame(
{
"int": [1, 2, None],
"data" : [dict(a=1,b="b"),dict(a=11,b="bb"),None]
}
)
df.describe()
print(df)
df2 = df.with_columns(pl.col("int").fill_null(0))
df2.describe()
print(df2)
# these error out:...
try:
df3 = df2.with_columns(pl.col("data").fill_null(dict(a=0,b="")))
except (Exception,) as e:
print("try#1", e)
try:
df3 = df2.with_columns(pl.col("data").fill_null(pl.struct(dict(a=0,b=""))))
except (Exception,) as e:
print("try#2", e)
Код: Выделить всё
shape: (3, 2)
┌──────┬─────────────┐
│ int ┆ data │
│ --- ┆ --- │
│ i64 ┆ struct[2] │
╞══════╪═════════════╡
│ 1 ┆ {1,"b"} │
│ 2 ┆ {11,"bb"} │
│ null ┆ {null,null} │
└──────┴─────────────┘
shape: (3, 2)
┌─────┬─────────────┐
│ int ┆ data │
│ --- ┆ --- │
│ i64 ┆ struct[2] │
╞═════╪═════════════╡
│ 1 ┆ {1,"b"} │
│ 2 ┆ {11,"bb"} │
│ 0 ┆ {null,null} │
└─────┴─────────────┘
try#1 invalid literal value: "{'a': 0, 'b': ''}"
try#2 a
Error originated just after this operation:
DF ["int", "data"]; PROJECT */2 COLUMNS; SELECTION: "None"
Можно также представить себе желание добавить жестко закодированный столбец, как в df4 = df.with_columns(pl.lit("0").alias("zerocol"))
Подробнее здесь: https://stackoverflow.com/questions/790 ... uct-column