#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