Polars: возврат dict из функции `map_elements` - порядок ключей не соответствует объявлению return_dtype?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Polars: возврат dict из функции `map_elements` - порядок ключей не соответствует объявлению return_dtype?

Сообщение Anonymous »

Обновление. Это было исправлено в pull/10172. Теперь запрос выполняется так, как ожидалось.

С этим определенным dtype (обратите внимание на порядок полей с обратным альфа-кодом):

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

Similarity = pl.Struct([
pl.Field('zavg', pl.Float64),
pl.Field('ystd', pl.Float64),
pl.Field('xbase_indices', pl.List(pl.Int64))
])
Когда я запускаю этот map_elements, возвращаю фиксированный словарь, который соответствует сходству по ключам, типу и порядку:

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

df = pl.DataFrame({'x': [0, 1]})
df.with_columns((
pl.col('x')
.map_elements(lambda d: {'zavg':1.1, 'ystd': 0.1, 'xbase_indices': [2]},
return_dtype=Similarity)
.alias(col+'_Blah')
for col in ['item_1A', 'item_7']))
Я получаю эту ошибку SchemaError с несоответствием порядка ключей (обратите внимание на порядок ключей):
SchemaError: ожидаемый тип вывода

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

Struct([
Field { name: "zavg", dtype: Float64 },
Field { name: "ystd", dtype: Float64 },
Field { name: "xbase_indices", dtype: List(Int64) }])
получено (обратите внимание на алфавитный порядок ключей)

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

Struct([
Field { name: "xbase_indices", dtype: List(Int64) },
Field { name: "ystd", dtype: Float64 },
Field { name: "zavg", dtype: Float64 }])
установить return_dtype на правильный тип данных
Если я удалю return_dtype, это сработает . Дальнейшие эксперименты показывают, что Polars читает клавиши dict в алфавитном порядке.
Ожидается? Как мне с этим справиться?

Подробнее здесь: https://stackoverflow.com/questions/767 ... ot-match-r
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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