在使用以前的 Spark 版本时,我总是在指定列名时感到困惑:我应该使用String
还是col object
。
pyspark.sql.functions.regexp_replace(str,pattern,replacement)[来源]
我正在运行版本 3.1.2 的集群,并且两者都可以正常工作:
df1.withColumn("modality",F.regexp_replace(F.col("name"),"i","")).display()
df1.withColumn("modality",F.regexp_replace("name","i","")).display()
从文档中我本来以为只允许使用字符串,但实际上两者都可以。我如何在 API 文档中看到是否还允许使用 col 对象(在最新的 API 中这一点非常清楚,但在之前的 API 中却不是这样)。
当您单击3.1.2 文档的源按钮时,您会发现以下源代码
regexp_replace
:您会看到
str
参数不是直接使用的,而是包装在_to_java_column
函数中。源代码_to_java_column
清楚地表明它适用于列名(字符串)和列对象:当浏览的源代码页面时
functions
,您会看到_to_java_column
无处不在,这意味着对于大多数函数(甚至是所有函数,但我没有检查),列对象的两个列名都可以使用。