我在PySpark中成功运行了以下代码:
def pd(data):
df = data
df = df.select('oproblem')
text_col = ['oproblem']
for i in text_col:
df = df.withColumn(i, F.lower(F.col(i)))
df = df.withColumn(i, F.regexp_replace(F.col(i), '[.,#-:;/?!\']', ' '))
return df
但是当我添加第二列并尝试循环它时,它不起作用:
def pd(data):
df = data
df = df.select('oproblem', 'lca')
text_col = ['oproblem', 'lca']
for i in text_col:
df = df.withColumn(i, F.lower(F.col(i)))
df = df.withColumn(i, F.regexp_replace(F.col(i), '[.,#-:;/?!\']', ' '))
return df
以下是我得到的错误: TypeError:'Column'对象不可调用
答案 0 :(得分:0)
我认为它应该是df = df.select(['oproblem', 'lca'])
而不是df = df.select('oproblem', 'lca')
。
更好的是出于代码质量目的,让select
语句使用text_columns
变量,因此如果您需要使用更多列或列进行更改,则只需更改1行代码名字改变了。例如,
def pd(data):
df = data
text_col = ['oproblem', 'lca']
df = df.select(text_col)
....