Как присвоить значение столбцу в фрейме данных Dask - PullRequest
1 голос
/ 04 марта 2020

Как сделать то же самое, что и нижеприведенный код для фрейма данных dask.

df['new_column'] = 0
for i in range(len(df)):
    if (condition):
        df[i,'new_column'] = '1'
    else:
        df[i,'new_column'] = '0'

Я хочу добавить новый столбец в фрейм данных dask и вставить 0/1 в новый столбец.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

В случае, если вы не хотите sh вычислять, как предлагает Раджни sh kumar, вы также можете использовать что-то вроде следующего:

import dask.dataframe as dd
import pandas as pd
import numpy as np

my_df = [{"a": 1, "b": 2}, {"a": 2, "b": 3}]
df = pd.DataFrame(my_df)
dask_df = dd.from_pandas(df, npartitions=2)
dask_df["c"] = dask_df.apply(lambda x: x["a"] < 2, 
                             axis=1, 
                             meta=pd.Series(name="c", dtype=np.bool))
dask_df.compute()

Вывод:

    a   b   c
0   1   2   True
1   2   3   False

Условие (здесь проверка, применяется ли запись в столбце "a" < 2) построчно. Обратите внимание, что в зависимости от вашего состояния и зависимостей в нем это может быть не так просто, но в этом случае вы можете поделиться дополнительной информацией о том, что влечет за собой ваше состояние.

0 голосов
/ 04 марта 2020

Вы не можете сделать это напрямую с Dask Dataframe. Сначала вам нужно его вычислить. Используйте это, это будет работать.

df = df.compute()
for i in range(len(df)):
if (condition):
    df[i,'new_column'] = '1'
else:
    df[i,'new_column'] = '0'

Причиной этого является Dask Dataframe - представление схемы dataframe, оно разделено на задачу с задержкой dask. Надеюсь, это поможет вам.

...