Создайте серию списков 1...N для N строк.Python

Программы на Python
Ответить
Anonymous
 Создайте серию списков 1...N для N строк.

Сообщение Anonymous »

Я пытаюсь создать pl.Series, где каждый элемент строки n представляет собой список элементов 1...n. Использование pl.int_range дает мне ошибку:

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

import polars as pl

df = pl.DataFrame({
'a': [1, 2, 3, 4, 5]
}).select(
pl.int_range(1, pl.col('a')+1)
)

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

ComputeError: `end` must contain exactly one value, got 5 values
Я могу обойти это, используя диапазон Python:

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

df = pl.DataFrame({
'a': [1, 2, 3, 4, 5]
})

print(df.with_columns(
pl.col('a').map_elements(lambda x: list(range(1, x+1))).alias('c')
))

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

shape: (5, 2)
┌─────┬───────────────┐
│ a   ┆ c             │
│ --- ┆ ---           │
│ i64 ┆ list[i64]     │
╞═════╪═══════════════╡
│ 1   ┆ [1]           │
│ 2   ┆ [1, 2]        │
│ 3   ┆ [1, 2, 3]     │
│ 4   ┆ [1, 2, ... 4] │
│ 5   ┆ [1, 2, ... 5] │
└─────┴───────────────┘
Но это, вероятно, не так эффективно.


Подробнее здесь: https://stackoverflow.com/questions/741 ... for-n-rows
Ответить

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

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

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

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

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