<p>这是一种使用regex的方法</p>
<p><strong>例如:</strong></p>
<pre><code>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)
</code></pre>
<p><strong>输出:</strong></p>
<pre><code> 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
</code></pre>
<hr/>
<p>使用<code>str.extract</code>编辑</p>
<pre><code>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)
</code></pre>