Apache spark PySpark:用空格循环列替换标点符号

Apache spark PySpark:用空格循环列替换标点符号,apache-spark,pyspark,apache-spark-sql,Apache Spark,Pyspark,Apache Spark Sql,我在PySpark中成功运行了以下代码: def pddata: df=数据 df=df。选择“oproblem” text_col=['oproblem'] 对于文本中的i\u col: df=df.withColumni,F.lowerF.coli df=df.withColumni,F.regexp_replaceF.coli,“[,-:;/?!\”,” 返回df 但当我在中添加第二列并尝试循环它时,它不起作用: def pddata: df=数据 df=df。选择“问题”、“生命周期评价

我在PySpark中成功运行了以下代码:

def pddata: df=数据 df=df。选择“oproblem” text_col=['oproblem'] 对于文本中的i\u col: df=df.withColumni,F.lowerF.coli df=df.withColumni,F.regexp_replaceF.coli,“[,-:;/?!\”,” 返回df 但当我在中添加第二列并尝试循环它时,它不起作用:

def pddata: df=数据 df=df。选择“问题”、“生命周期评价” text_col=['oproblem','lca'] 对于文本中的i\u col: df=df.withColumni,F.lowerF.coli df=df.withColumni,F.regexp_replaceF.coli,“[,-:;/?!\”,” 返回df 下面是我得到的错误: TypeError:“Column”对象不可调用

我认为它应该是df=df。选择['oproblem','lca']而不是df=df。选择'oproblem','lca'

更好的是,出于代码质量的目的,让select语句使用text_columns变量,这样,如果需要对更多列执行此操作或列名发生更改,则只需更改一行代码。例如

def pd(data):
    df = data
    text_col = ['oproblem', 'lca']
    df = df.select(text_col)
    ....

从您提供的代码中,您不应该得到该错误。你能回答这个问题并包括显示错误发生地点的完整回溯吗?你也可以做df=data。选择'oproblem','lca',然后选择text\u col=df.columns来保存一些输入。它不应该是df=df。选择['oproblem','lca']而不是df=df。选择'oproblem','lca',你可以尝试这个df=df.withColumni,F.regexp\u replacedf[i],“[,-:;/?!\”,“@David pyspark数据框架api支持这两种方式。在引擎盖下面,我相信它会像这样打开列表。选择*my_list_of_columns。编辑链接以确认这一点。@David:将列放入[]成功了!非常感谢。