удалить последний символ из строки - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь создать новый столбец данных (b), удаляя последний символ из (a).Столбец a - это строка различной длины, поэтому я пытаюсь использовать следующий код:

from pyspark.sql.functions import *
df.select(substring('a', 1, length('a') -1 ) ).show()

Я получаю сообщение об ошибке TypeError: объект 'Column' не вызывается

.несколько функций, но я не могу понять, почему, поскольку они работают сами по себе -

, если я жестко закодирую длину столбца, это будет работать

df.select(substring('a', 1, 10 ) ).show()

или если я использую длину самостоятельно, она будет работать

df.select(length('a') ).show()

почему я не могу использовать несколько функций?Есть ли более простой способ удаления последнего символа из всех строк в столбце?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Ваш код почти правильный. Вам просто нужно использовать функцию len.

df = spark.createDataFrame([('abcde',)],['dummy'])

from pyspark.sql.functions import substring

df.select('dummy',substring('dummy', 1, len('dummy') -1).alias('substr_dummy')).show()

#+-----+------------+
#|dummy|substr_dummy|
#+-----+------------+
#|abcde|        abcd|
#+-----+------------+
0 голосов
/ 10 мая 2019

Использование substr

df.select(col('a').substr(lit(0), length(col('a')) - 1))

или используя regexp_extract:

df.select(regexp_extract(col('a'), '(.*).$', 1))

Функция substring не работает, так как параметры pos и len должны быть целыми числами, а не столбцами http://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=substring#pyspark.sql.functions.substring

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