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

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

Сообщение Anonymous »

Я хочу обновить определенный столбец в определенном диапазоне индексов строк.
Вот чего я хочу добиться в pandas:

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

df = pd.DataFrame({ "foo": [0,0,0,0] })
df["foo"].iloc[0:3] = 1
# or
df.iloc[0:3, df.columns.get_loc("foo")] = 1
Как мне выполнить эту, казалось бы, простую операцию в полярах? Кажется, можно обновить одну строку следующим образом:

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

df = pl.DataFrame({ "foo": [0,0,0,0] })
df[0, "foo"] = 1
но попытка обновить диапазон не удалась:

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

df[0:3, "foo"] = 1
# TypeError: cannot use "slice(0, 3, None)" for indexing

df[0:3]["foo"] = 1
# TypeError: DataFrame object does not support `Series` assignment by index
Рекомендуемый ответ с использованием pl.when(pl.col("row_number").between(...)).then(...) добавляет значительные накладные расходы, которые не должны быть необходимы, учитывая, что номер строки является последовательным, упорядоченным и начинается с 0. В наборе данных с миллионом строк я вижу 20-кратную разницу в производительности между pandas df.iloc[...] = x и текущими полярами решение. Неужели альтернативы нет?


Подробнее здесь: https://stackoverflow.com/questions/787 ... ific-range
Ответить

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

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

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

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

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