在火花中的加号( )上拆分字符串列,然后修剪结果



我想根据现有列的值生成列。在有加号的地方,我们想拆开并拾取列的第二部分,如果有任何空间,则要修剪。

df = spark.sql("select '10/35/70/25% T4Max-300 + 20/45/80/25% T4Max-400' as col1")
df1 = df.withColumn("newcol",col('col1').split("+")[1].strip())

获取错误TypeError: 'Column' object is not callable

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

代码col('col1')用名称"col1"返回数据框中的pyspark.sql.Column

您正在遇到错误:

TypeError: 'Column' object is not callable

因为您试图将split(和trim)称为此列上的方法,但不存在此类方法。

相反,您要以Column作为参数来调用函数pyspark.sql.functions.split()pyspark.sql.functions.trim()

例如:

df1 = df.withColumn(
    "newcol",
    f.trim(
        f.split(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()的第二个论点被视为正则表达模式,因此必须逃脱+

相关内容

  • 没有找到相关文章

最新更新