Прежде всего, я рекомендую вам проверить pyspark документацию и найти replace(to_replace, value=<no value>, subset=None)
определение функции.
Вы передаете словарь diz
с парами ключ / значение, ииз-за того, что это значение 1
будет игнорироваться в вашем случае, таким образом, вы получите следующий результат:
>>> person.replace(diz,1,'name').show()
+---+----------------+----------------+---------------+
| id| name|graduate_program| spark_status|
+---+----------------+----------------+---------------+
| 0| ABC| 0| [100]|
| 1| Matei Zaharia| 1|[500, 250, 100]|
| 2|Michael Armbrust| 1| [250, 100]|
| 1| DEF| 4| [200]|
+---+----------------+----------------+---------------+
Обратите внимание, что в вашем столбце использования только name
, который вы указали как subset
, будетзатронут, и вы можете четко видеть, что ваши пары словаря key/value
были использованы как to_replace/value
.
Теперь, если вы хотите проверить, как должен работать аргумент значения, проверьте этот пример:
>>> person.replace(['Adam', 'Bill Chambers'],['Bob', 'Omar'],'name').show()
+---+----------------+----------------+---------------+
| id| name|graduate_program| spark_status|
+---+----------------+----------------+---------------+
| 0| Omar| 0| [100]|
| 1| Matei Zaharia| 1|[500, 250, 100]|
| 2|Michael Armbrust| 1| [250, 100]|
| 1| Bob| 4| [200]|
+---+----------------+----------------+---------------+
Примечание Если вы хотите указать другой список to_replace / value для двух столбцов, проверьте следующее использование dataframe.replace()
:
>>> person.replace([1, 0],[9, 5],['id', 'graduate_program']).show()
+---+----------------+----------------+---------------+
| id| name|graduate_program| spark_status|
+---+----------------+----------------+---------------+
| 5| Bill Chambers| 5| [100]|
| 9| Matei Zaharia| 9|[500, 250, 100]|
| 2|Michael Armbrust| 9| [250, 100]|
| 9| Adam| 4| [200]|
+---+----------------+----------------+---------------+
В предыдущем примере мы нацелены на двато же самое значение набрало (int) столбцы [id, graduate_program]
и заставило заменить все единицы на 9, а все нули заменить на 5.
Надеюсь, это ответит на ваш вопрос