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
并传入该列。有关详细信息,请参见链接副本。