Использование Groupby для хранения значений value_counts в новом столбце в Dask Dataframe - PullRequest
1 голос
/ 28 сентября 2019

Я использовал это решение для вычисления и сохранения значения value_counts столбца в Pandas и сохранения результатов в новом столбце.

Теперь я пытаюсь сделатьТо же самое для Dask Dataframe, но вызывает следующую ошибку:

df['new_column'] = df.groupby(['A'])['B'].transform('count', meta='int').compute()

ValueError: не может переиндексировать с дублированной оси

PS В кадре данных df имеется четыреразделы.

Как подсчитать значение value_count столбца A и сохранить их в new_column в Dask, так же, как этот ответ ?

1 Ответ

1 голос
/ 29 сентября 2019

В случае, если вам не нужно придерживаться transform (что было введено в самой последней версии dask, см. выпуск ), я предлагаю вам использовать левое слияние, как в следующем коде.


import pandas as pd
import dask.dataframe as dd

df = pd.DataFrame({"A":[0,0,1,1,1,2,2],
                   "B":[1,2,3,4,5,6,7]})

df = dd.from_pandas(df, npartitions=2)

out = df.groupby("A")["B"]\
        .count()\
        .compute()\
        .reset_index(name="new_column")

df = dd.merge(df, out, on=["A"], how="left")

...