Это один подход с использованием регулярных выражений.
Пример:
import re
df = pd.DataFrame({"transaction_description": ['POS PURCHASE MR PRICE WHK FAC', 'WITHDRAWAL FEE', 'POS PURCHASE KFC WERNHIL STATE', 'REJECTED ATM TRANSACTION', 'ATM CASH WITHDRAWAL', 'POS PURCHASE EDGARS GROVE']})
df["TRANX"] = df["transaction_description"].apply(lambda x: re.search(r"POS PURCHASE (\w+\s+\w+)", x).group(1) if "POS PURCHASE" in x else x)
print(df)
Вывод:
transaction_description TRANX
0 POS PURCHASE MR PRICE WHK FAC MR PRICE
1 WITHDRAWAL FEE WITHDRAWAL FEE
2 POS PURCHASE KFC WERNHIL STATE KFC WERNHIL
3 REJECTED ATM TRANSACTION REJECTED ATM TRANSACTION
4 ATM CASH WITHDRAWAL ATM CASH WITHDRAWAL
5 POS PURCHASE EDGARS GROVE EDGARS GROVE
Редактировать - используя str.extract
df = pd.DataFrame({"transaction_description": ['POS PURCHASE MR PRICE WHK FAC', 'WITHDRAWAL FEE', 'POS PURCHASE KFC WERNHIL STATE', 'REJECTED ATM TRANSACTION', 'ATM CASH WITHDRAWAL', 'POS PURCHASE EDGARS GROVE']})
df["TRANX"] = df["transaction_description"].str.extract(r"POS PURCHASE (\w+\s+\w+)")
df["TRANX"].fillna(df["transaction_description"], inplace=True)
print(df)