PySpark或方法异常
我正在尝试修改PySpark dataframe中的列值,如下所示:PySpark或方法异常,pyspark,Pyspark,我正在尝试修改PySpark dataframe中的列值,如下所示: df_cleaned = df_cleaned.withColumn('brand_c', when(df_cleaned['brand'] == "samsung" |\ df_cleaned['brand'] == "oppo", df_cleaned.brand)\
df_cleaned = df_cleaned.withColumn('brand_c', when(df_cleaned['brand'] == "samsung" |\
df_cleaned['brand'] == "oppo", df_cleaned.brand)\
.otherwise('others'))
这将生成以下异常:
调用o435.or时出错。跟踪:py4j.Py4JException:
方法或([class java.lang.String])在不存在
py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
在
py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
在py4j.Gateway.invoke(Gateway.java:274)处
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
在py4j.commands.CallCommand.execute(CallCommand.java:79)处
在上运行(GatewayConnection.java:238)
run(Thread.java:748)
回溯(最近一次调用上次):文件
“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/column.py”,第行
115,在_
njc=getattr(self._jc,name)(jc)文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,
第1257行,在调用中
答案,self.gateway_client,self.target_id,self.name)文件“/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py”,第63行,
装饰
返回f(*a,**kw)文件“/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,行
332,在get_返回_值中
格式(target_id,“.”,name,value))py4j.protocol.Py4JError:调用o435.or时出错。跟踪:py4j.Py4JException:
方法或([class java.lang.String])在不存在
py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
在
py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
在py4j.Gateway.invoke(Gateway.java:274)处
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
在py4j.commands.CallCommand.execute(CallCommand.java:79)处
在上运行(GatewayConnection.java:238)
run(Thread.java:748)
你只是少了几个括号。尝试:
df_cleaned = df.withColumn('brand_c', when((df['Product'] == "apple") |\
(df['Product'] == "oppo"), df.User).otherwise('others'))
在pyspark中使用比较运算符时,请始终使用括号。您只是缺少几个括号而已。尝试:
df_cleaned = df.withColumn('brand_c', when((df['Product'] == "apple") |\
(df['Product'] == "oppo"), df.User).otherwise('others'))
在pyspark中使用比较运算符时始终使用括号