我是PySpark的新手。
我有一个火花有一列“设备类型”。
我想将“Tablet”或“Phone”中的每个值替换为“Phone”,并将“PC”替换为“Desktop”。
在Python中,我可以执行以下操作:
deviceDict = {'Tablet':'Mobile','Phone':'Mobile','PC':'Desktop'}
df['device_type'] = df['device_type'].replace(deviceDict,inplace=False)
如何使用PySpark实现此目标?谢谢!
这里有一个小的helper函数,受R
recode
函数的启发,它抽象了前面的答案。作为奖励,它添加了默认值的选项。这是
recode
的定义。在没有默认值的情况下创建列将在所有不匹配的值中提供
null
/None
。另一方面,为
default
指定一个值将用此默认值替换所有不匹配的值。您也可以使用
df.withColumn
来完成此操作:您可以使用
na.replace
:或映射文字:
请注意,后一种解决方案将把映射中不存在的值转换为
NULL
。如果这不是所需的行为,可以添加coalesce
:相关问题 更多 >
编程相关推荐