разбить столбец строки на знак плюс (+) в искре и обрезать результат - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу создать столбец на основе значения существующего столбца.Везде, где есть знак плюс, мы хотим разделить и забрать 2-ю часть столбца и обрезать, если есть пробел.

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

1 Ответ

0 голосов
/ 28 февраля 2019

Код col('col1') возвращает pyspark.sql.Column в вашем DataFrame с именем "col1".

Вы получаете ошибку:

TypeError: 'Column' object is not callable

потому что вы пытаетесь вызвать splittrim) как методы для этого столбца, но таких методов не существует.

Вместо этого вы хотите вызвать функции pyspark.sql.functions.split() и pyspark.sql.functions.trim() с Column, переданным в качестве аргумента.

Например:

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() обрабатывается как шаблон регулярного выражения, поэтому + необходимо экранировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...