PySpark: замените пунктуацию пробелами в столбцах - PullRequest
0 голосов
/ 18 мая 2018

У меня следующий код успешно работает в 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

Ниже приведена ошибка, которую я получаю: Ошибка типа: объект «Столбец» не вызывается

1 Ответ

0 голосов
/ 18 мая 2018

Я думаю, что это должно быть 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)
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...