Я пытаюсь сделать условное присвоение строкам определенного столбца: target
. Я провел некоторое исследование, и мне показалось, что ответ был дан здесь: «Как выполнять обработку строк и назначение элементов в dask» .
Я воспроизведу мою необходимость. Макет данных:
x = [3, 0, 3, 4, 0, 0, 0, 2, 0, 0, 0, 6, 9]
y = [200, 300, 400, 215, 219, 360, 280, 396, 145, 276, 190, 554, 355]
mock = pd.DataFrame(dict(target = x, speed = y))
Внешний вид mock
:
In [4]: mock.head(7)
Out [4]:
speed target
0 200 3
1 300 0
2 400 3
3 215 4
4 219 0
5 360 0
6 280 0
Имея это Pandas DataFrame
, я превращаю его в Dask DataFrame
:
mock_dask = dd.from_pandas(mock, npartitions = 2)
Я применяю свое условное правило: все значения в target
выше 0, должны быть 1, все остальные 0 (бинарное target
). Следуя вышеупомянутой теме, оно должно быть:
result = mock_dask.target.where(mock_dask.target > 0, 1)
Я смотрю на набор данных результата, и он не работает должным образом:
In [7]: result.head(7)
Out [7]:
0 3
1 1
2 3
3 4
4 1
5 1
6 1
Name: target, dtype: object
Как мы видим, столбцы target
в mock
и result
не являются ожидаемыми результатами. Кажется, что мой код преобразовывает все 0 исходных значений в 1 вместо значений, которые больше 0 в 1 (условное правило).
Даск, новичок здесь, заранее спасибо за вашу помощь.