如何在使用字典时使用 replace() 方法替换列值?
How to replace column values using replace() method while using dictionary?
在使用替换方法替换 df 中列的值时,我们如何利用字典来执行 same.I 我的语法有问题。
person = spark.createDataFrame([
(0, "Bill Chambers", 0, [100]),
(1, "Matei Zaharia", 1, [500, 250, 100]),
(2, "Michael Armbrust", 1, [250, 100]),
(1,'Adam',4,[200])])\
.toDF("id", "name", "graduate_program", "spark_status")
diz={'Bill Chambers':'ABC','Adam':'DEF'}
I saw that the syntax is:
person.replace(diz,1,'name')
参数中这里的1有什么意义?
首先,我鼓励您检查 pyspark documentation 并搜索 replace(to_replace, value=<no value>, subset=None)
函数定义。
你正在传递一个字典 diz
与 key/value 对,并且由于该值 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]|
+---+----------------+----------------+---------------+
请注意,在您的用法中,您指定为 subset
的列 name
将受到影响,您可以清楚地看到您的字典 key/value
对已被用作 [=19] =].
现在,如果您想测试值参数应该如何工作,请查看此示例:
>>> 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]
,并强制将所有的 1 替换为 9,将所有的 0 替换为 5。
我希望这能回答你的问题
在使用替换方法替换 df 中列的值时,我们如何利用字典来执行 same.I 我的语法有问题。
person = spark.createDataFrame([
(0, "Bill Chambers", 0, [100]),
(1, "Matei Zaharia", 1, [500, 250, 100]),
(2, "Michael Armbrust", 1, [250, 100]),
(1,'Adam',4,[200])])\
.toDF("id", "name", "graduate_program", "spark_status")
diz={'Bill Chambers':'ABC','Adam':'DEF'}
I saw that the syntax is:
person.replace(diz,1,'name')
参数中这里的1有什么意义?
首先,我鼓励您检查 pyspark documentation 并搜索 replace(to_replace, value=<no value>, subset=None)
函数定义。
你正在传递一个字典 diz
与 key/value 对,并且由于该值 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]|
+---+----------------+----------------+---------------+
请注意,在您的用法中,您指定为 subset
的列 name
将受到影响,您可以清楚地看到您的字典 key/value
对已被用作 [=19] =].
现在,如果您想测试值参数应该如何工作,请查看此示例:
>>> 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]
,并强制将所有的 1 替换为 9,将所有的 0 替换为 5。
我希望这能回答你的问题