Как мне заполнить_null в столбце структуры?Python

Программы на Python
Anonymous
Как мне заполнить_null в столбце структуры?

Сообщение Anonymous »

Я пытаюсь сравнить два кадра данных через dfcompare = (df0 == df1), и значения NULL никогда не считаются идентичными (в отличие от соединения, нет возможности разрешить совпадение значений NULL). >
Мой подход к другим полям — заполнить их «пустым значением», соответствующим их типу данных. Что мне следует использовать для структур?

Код: Выделить всё

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

Вернуться в «Python»