Apache spark 在spark中拆分加号(+;)上的字符串列并修剪结果

Apache spark 在spark中拆分加号(+;)上的字符串列并修剪结果,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我想根据现有列的值生成一列。如果有加号,我们希望拆分和拾取柱的第二部分,如果有任何空间,则进行修剪 df=spark.sql(“选择'10/35/70/25%T4Max-300+20/45/80/25%T4Max-400'作为col1”) df1=df.withColumn(“newcol”,col('col1')。拆分(“+”[1]。strip()) 获取错误TypeError:“Column”对象不可调用 预期输出为20/45/80/25%T4Max-400代码col('col1')返回数

我想根据现有列的值生成一列。如果有加号,我们希望拆分和拾取柱的第二部分,如果有任何空间,则进行修剪

df=spark.sql(“选择'10/35/70/25%T4Max-300+20/45/80/25%T4Max-400'作为col1”)
df1=df.withColumn(“newcol”,col('col1')。拆分(“+”[1]。strip())
获取错误
TypeError:“Column”对象不可调用

预期输出为
20/45/80/25%T4Max-400

代码
col('col1')
返回数据帧中名为
“col1”
的值

您将得到以下错误:

TypeError:“Column”对象不可调用
因为您试图调用
split
(和
trim
)作为此列上的方法,但不存在此类方法

相反,您希望调用函数并将
列作为参数传入

例如:

df1=df.withColumn(
“纽科尔”,
f、 修剪(
f、 拆分(f.col('col1'),r“\+”)[1]
)
)
df1.show(truncate=False)
#+-----------------------------------------------+----------------------+
#|col1 | newcol|
#+-----------------------------------------------+----------------------+
#|10/35/70/25%T4Max-300+20/45/80/25%T4Max-400 | 20/45/80/25%T4Max-400|
#+-----------------------------------------------+----------------------+

split()
的第二个参数被视为正则表达式模式,因此必须对
+
进行转义。

可能重复的
split
trim
不是
Column
的方法-您需要调用
pyspark.sql.functions.split/trim
并传入该列。有关详细信息,请参见链接副本。