Изменить значения по всему столбцу pyspark - PullRequest
0 голосов
/ 31 октября 2018

У меня есть фрейм данных pyspark, и я хотел бы иметь условную замену строки в нескольких столбцах, а не только в одном. Чтобы быть более конкретным: я хотел бы заменить строку «HIGH» на 1, а все остальное в столбце на 0. [Или, по крайней мере, заменить каждое «HIGH» на 1.] В пандах я бы сделал:

df[df == 'HIGH'] = 1

Есть ли способ сделать что-то подобное? Или я могу сделать цикл?

Я новичок в pyspark, поэтому не знаю, как создать пример кода.

1 Ответ

0 голосов
/ 31 октября 2018

Для этого можно использовать метод replace:

>>> df.replace("HIGH", "1")

Имейте в виду, что вам необходимо заменить подобные типы данных, поэтому попытка заменить "HIGH" на 1 приведет к исключению.

Изменить: Вы также можете использовать regexp_replace для решения обеих частей вашего вопроса, но вам нужно применить его ко всем столбцам:

>>> df = df.withColumn("col1", regexp_replace("col1", "^(?!HIGH).*$", "0"))
>>> df = df.withColumn("col1", regexp_replace("col1", "^HIGH$", "1"))
...