Как изменить строки и столбцы в фрейме данных dask?

Есть несколько проблем, с которыми я сталкиваюсь с Dasc Dataframes.

говорит, что у меня есть кадр данных с 2 столбцами ['a','b']

если я хочу новый столбец c = a + b

в pandas я бы сделал:

df['c'] = df['a'] + df['b']

В dask я выполняю следующую операцию:

df = df.assign(c=(df.a + df.b).compute())

можно ли написать эту операцию лучше, подобно тому, что мы делаем в pandas?

Второй вопрос - это то, что беспокоит меня больше.

В pandas, если я хочу изменить значение 'a' для строк 2 и 6 на np.pi, я делаю следующее

df.loc[[2,6],'a'] = np.pi

Мне не удалось выяснить, как сделать аналогичную операцию в Dask. Моя логика выбирает несколько строк, и я хочу только изменить значения в этих строках.

1 ответ

Редактировать Добавить новые столбцы

Синтаксис Setitem теперь работает в dask.dataframe

df['z'] = df.x + df.y

Старый ответ: добавьте новые столбцы

Вы правы, что синтаксис setitem не работает в dask.dataframe.

df['c'] = ... # mutation not supported

Как вы полагаете, вместо этого вы должны использовать .assign(...).

df = df.assign(c=df.a + df.b)

В вашем примере у вас есть ненужный вызов .compute(). Обычно вы хотите вызывать вычисление только в самом конце, как только у вас есть конечный результат.

Изменить строки

Как и раньше, dask.dataframe не поддерживает изменение строк на месте. Операции на местах трудно рассуждать о параллельных кодах. В настоящий момент dask.dataframe не имеет приятной альтернативной операции в этом случае. Я поднял вопрос № 653 для разговора по этой теме.

licensed under cc by-sa 3.0 with attribution.