Условно присвоить значение Dask Dataframe, используя Применить - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь перебрать кадр данных Dask и сравнить значения в одном из его столбцов со столбцом в другом кадре данных Dask с тем же именем. Если столбцы совпадают, я хотел бы обновить значение целевого фрейма данных Dask. Код ниже работает, но значения не обновляются до «1», где я ожидал, или где-либо еще. Я новичок в Dask и подозреваю, что пропустил какой-то важный шаг или не понимаю структуру.

def populateSymptomsDDF(row):
    for vac in row['vac_codes']:
        if vac in symptoms_ddf.columns:
            symptoms_ddf[vac] = symptoms_ddf[vac].where(symptoms_ddf['dog'] == row['dog'], 1)


with ProgressBar():
    x = vac_ddf.apply(lambda x: populateSymptomsDDF(x), meta=('int64'), axis=1)
    x.compute(scheduler='processes') 
    symptoms_ddf.compute()

Глава icd_ddf:

dog vac_codes
0   1   [G35, E11.40, R53.1, Z79.899, I87.2]
1   2   [G35, R53.83, G47.00]
2   3   [G35, G95.9, R53.83, F41.9]
3   4   [G35, N53.9, E55.9, Z74.09]
4   5   [G35, M51.26, R53.1, M47.816, R25.2, G82.50, R...

Глава симптомов_ddf (до запуска кода) :

dog W19 W10 W05.0   V00.811 R53.83  R53.8   R53.1   R47.9   R47.89  ... G81.12  G81.11  G81.10  G50.0   G31.84  F52.8   F52.31  F52.22  F52.0   F03
0   1   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
1   2   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
2   3   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
3   4   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
4   5   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0

Спасибо за любые идеи, которые вы можете предоставить!

1 Ответ

0 голосов
/ 12 апреля 2020

Фреймы данных Dask не имеют того же поведения на месте, что и pandas. Обычно каждая операция должна быть параллельной. В противном случае нет особой причины использовать Dask.

Кроме того, итерация по фреймам данных, как правило, будет довольно медленной. Это также верно для Pandas.

К счастью, я думаю, что вы, возможно, просто ищете операцию объединения или слияния. Я бы посоветовал вам поискать документацию для Pandas слияния

https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

...