Изучение альтернатив для применения условий к каждой строке кадра данных, кроме pandas apply - PullRequest
0 голосов
/ 05 марта 2020

У меня есть функция с именем postprocess, которая применяется при условии l oop, чтобы найти для - и alphabets для каждой строки кадра данных. postprocess выглядит следующим образом:

def postprocess(description, start_index, end_index):
      if (start_index > 0) & (start_index < len(description)):
        while bool(re.match(r"\w|\'|-", description[start_index - 1])) & bool(
            re.match(r"\w|\'|-", description[start_index])
        ):
            start_index = start_index - 1
            if new_start == 0:
                break
      description = description[new_start:new_end]
      return description

Например, description равно credit payment velvet-burger, start_index равно 7 и end_index равно 12. Итак, description[start_index] будет b, что b в burger будет выполняться через некоторое время l oop путем отслеживания в обратном направлении, чтобы вернуть целевую подстроку, которую мы хотим видеть, потому что burger не завершена, так как нам нужно слово velvet-. После запуска postprocess мы получим velvet-burger. Полный код выглядит следующим образом:

df["target_substring"] = df.apply(lambda x: postprocess(
                         x["description"], x["start_index"], x["end_index"]+1),
                         axis=1)

Есть ли лучший способ написать этот код?

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Также взгляните на np.vectorize из numpy модуля. Может реально повысить эффективность вашего кода. Checkit здесь

0 голосов
/ 05 марта 2020

Вы также можете попробовать iterrows () ( документация )

for rowindex, rowvalues in df.iterrows():
   # do stuff with rowvalues['description']...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...