Добавление столбца «Объект» в полярный DataFrame с трансляциейPython

Программы на Python
Ответить
Anonymous
 Добавление столбца «Объект» в полярный DataFrame с трансляцией

Сообщение Anonymous »

Если у меня есть DataFrame, я могу создать столбец с одним значением, например:

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

df = pl.DataFrame([[1, 2, 3]])
df.with_columns(pl.lit("ok").alias("metadata"))

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

shape: (3, 2)
┌──────────┬──────────┐
│ column_0 ┆ metadata │
│ ---      ┆ ---      │
│ i64      ┆ str      │
╞══════════╪══════════╡
│ 1        ┆ ok       │
│ 2        ┆ ok       │
│ 3        ┆ ok       │
└──────────┴──────────┘
но со столбцами pl.Object это не работает:

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

df = pl.DataFrame([[1, 2, 3]])
df.with_columns(pl.lit("ok", dtype=pl.Object).alias("metadata"))
# InvalidOperationError: casting from Utf8View to FixedSizeBinary(8) not supported
использование одноэлементного pl.Series тоже не работает:

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

df.with_columns(pl.Series(["ok"], dtype=pl.Object).alias("metadata"))
# InvalidOperationError: Series metadata, length 1 doesn't
# match the DataFrame height of 3
# If you want expression: Series[metadata] to be broadcasted,
# ensure it is a scalar (for instance by adding '.first()').
Похоже, что мне нужно либо создать pl.Series правильной длины вручную (например, pl.Series(["ok"] * df.height, dtype=pl.Object), либо выполнить перекрестное соединение следующим образом:

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

df.join(pl.Series(["ok"], dtype=pl.Object).to_frame("metadata"), how="cross")
Это работает, но не очень элегантно. Есть ли лучшие решения?
NB. В качестве примера я использовал строковый объект. Мне действительно нужен столбец pl.Object для хранения различных разнородных данных, а не строк, и я не могу использовать вместо него, скажем, pl.Struct.

Подробнее здесь: https://stackoverflow.com/questions/798 ... oadcasting
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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