Регулярное выражение для столбца

#python

#python

Вопрос:

 Dataframe 
   Ticket       Job
    RQ01    obe_fin_r3_003
    RQ02    ouk_log_r3_002_am

My Objective
 

Оно заключается в извлечении fin, регистрации из столбца задания и создании нового.

 My Code
df['job_type'] = df.short_description.str.findall(r'(_w )').str[0]
 

Это не дает желаемого результата, пожалуйста, предложите регулярное выражение

Комментарии:

1. Да, все работают, используется регулярное выражение

Ответ №1:

С помощью регулярных выражений вы можете попробовать это

 r'_([a-z] )_'
 

Ответ №2:

Вы можете использовать регулярное выражение, но вы всегда можете использовать .str.split() :

 df['New'] = df['Job'].str.split('_').str[1]
 

Это выводит:

   Ticket                Job  New
0   RQ01     obe_fin_r3_003  fin
1   RQ02  ouk_log_r3_002_am  log
 

Комментарии:

1. Получение KeyError: ‘задание’

2. Исправьте имя столбца, чтобы оно соответствовало вашему фрейму данных. В вашем примере столбец был назван Job .

Ответ №3:

Если вы хотите сопоставить символы word после первого подчеркивания, вы должны исключить сопоставление _ самого себя, которое также сопоставляется w

 [^W_] _([^W_] )
 

Объяснение

  • [^W_] Сопоставьте символы 1 word, кроме _
  • _ Сопоставьте _
  • ([^W_] ) Захват совпадающих символов 1 word без подчеркивания в группе 1

Использование str.extract извлечет группы из первого совпадения регулярного выражения.

 import pandas as pd

strings = [
    ["RQ01", "obe_fin_r3_003"],
    ["RQ01", "ouk_log_r3_002_am"]
]
df = pd.DataFrame(data=strings, columns=["Ticket", "Job"])
df["job_type"] = df["Job"].str.extract(r'[^W_] _([^W_] )')
print(df)
 

Вывод

   Ticket                Job job_type
0   RQ01     obe_fin_r3_003      fin
1   RQ01  ouk_log_r3_002_am      log