我有一个pyspark数据框,我想有条件地替换多个列中的字符串,而不仅仅是一个。 更具体地讲:我想将字符串'HIGH'替换为1,并将列中的所有其他内容替换为0。[或者至少将每个'HIGH'替换为1。]在熊猫中,我会做:
df[df == 'HIGH'] = 1
有没有办法做类似的事情?还是可以循环播放?
我是pyspark的新手,所以我不知道如何生成示例代码。
答案 0 :(得分:1)
您可以为此使用replace
方法:
>>> df.replace("HIGH", "1")
请记住,您需要像like这样的数据类型进行替换,因此尝试将"HIGH"
替换为1
会引发异常。
编辑:您也可以使用regexp_replace
来解决问题的两个部分,但是您需要将其应用于所有列:
>>> df = df.withColumn("col1", regexp_replace("col1", "^(?!HIGH).*$", "0"))
>>> df = df.withColumn("col1", regexp_replace("col1", "^HIGH$", "1"))