У меня есть pipelinedrdd, как показано ниже. в каждой строке содержится более 4 тыс. столбцов, но я покажу только несколько.Обработка значения столбца в pyspark
raw_rdd
['2016-09-21T00:00:00-05:00 Chicago,"","",150.39999389648438cfm,false,false,0.30000001192092896inHO,68F,70.69999694824219F,.....']
здесь я пытаюсь применить определенное преобразование, как если значение полей совпадает с регулярным выражением "\d{4}[-]\d{2}[-]\d{2}"
для значения даты 2016-09-21T00:00:00-05:00 Chicago
тогда он должен вернуть только 2016-09-21T00:00:00-05:00
. но он возвращает исходное значение.
код
def is_date(inst):
if re.search("\d{4}[-]\d{2}[-]\d{2}", inst):
return True
def transform(line):
for i in range(len(line)):
if is_date(str(line[i])):
if str(line[i]) != "":
line[i] = line[i].split()[0]
return line
transformed_rdd = raw_rdd.map(transform)
может кто-нибудь помочь мне выяснить вопрос, как, где я буду неправильно.
Вы не возвращаете совпадение, вы возвращаете True только в том случае, если есть совпадение и распечатываете всю строку. Верните 'group (0)' и распечатайте его. –