Код: Выделить всё
df = pl.DataFrame({
'order': [38681.0, 38692.0, 38680.0, 38693.0],
'shipto': ["471433", "239269", "471433","239269"],
'value': [10,20,30,None]
})
Базовый скрипт:
Код: Выделить всё
df = (df
.with_columns([
pl.col('order').cast(pl.Utf8),
pl.col(pl.Float64).fill_null(0)
])
.groupby('shipto')
.agg([
pl.col('order').apply(lambda x: str(x)).alias('order_list'),
pl.sum('value')
])
)
доставка
список_заказов
значение
str
str
i64
471433
форма: ( 2,)
40
< td>Серия: '' [f64]
[
...
239269
форма: (2,)
20
< td>
Серия: '' [f64]
[
...
Я надеюсь получить в столбце «order_list» либо ([38681.0,38680.0],[38692.0,38693.0] ) или (['38681.0','38680.0'],['38692.0','38693.0'])
Я предполагаю, что столбец "заказ" необходимо преобразовать из значений f64 в строка (Utf8), но не могу заставить ее работать.
Вариации строки 'pl.col('order').cast(pl.Utf8), #.cast (pl.Float64)», которые я пробовал до сих пор:
Код: Выделить всё
pl.col('order').cast(pl.Float64).cast(pl.Utf8),
pl.col('order').cast(pl.Int64).cast(pl.Utf8),
pl.col('order').map(lambda x: str(x)),
pl.col('order').apply(lambda x: str(int(x))),
pl
.when(pl.col('order').is_null())
.then(pl.lit(''))
.otherwise(pl.col('order').cast(pl.Float64).cast(pl.Utf8)).alias('order'),
Подробнее здесь: https://stackoverflow.com/questions/756 ... te-to-list