Как сказал другой пользователь, необходимо экранировать специальные символы, такие как скобки, с обратной косой чертой. Здесь вы можете найти список специальных символов регулярных выражений.Следующий код использует два разных подхода к вашей проблеме.С помощью regexp_extract мы извлекаем один символ между ('и' в столбце _c0. С regexp_replace мы заменим) во втором столбце.Конечно, вы можете использовать только функцию regexp_replace с регулярным выражением "[() ']" для достижения того, что вы хотели.Я просто хочу показать вам два различных способа решения проблемы.
from pyspark.sql import functions as F
columns = ['_c0', '_c1']
vals = [("('a'", "2)"),("('b'", "4)"),("('c'", "6)")]
df = spark.createDataFrame(vals, columns)
df = df.select(F.regexp_extract('_c0', "\('(\w)'", 1).alias('_c0')
, F.regexp_replace("_c1", "\)", "").alias('_c1'))
df.show()
Вывод:
+---+---+
|_c0|_c1|
+---+---+
| a| 2|
| b| 4|
| c| 6|
+---+---+