擅长:python、mysql、java
<p>您可以使用<code>Series.str.replace</code>:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
df = pd.DataFrame({'col':['GRE MET HOCK 38', 'ASS COM CORD EMERG INIT']})
df['col'].str.replace(r'\b(?!\d+\b)(\w)\w*|\s+', lambda x: x.group(1).upper() if x.group(1) else '', regex=True)
# => 0 GMH38
# 1 ACCEI
# Name: col, dtype: object
</code></pre>
<p>见<a href="https://regex101.com/r/Tfrqvu/1" rel="nofollow noreferrer">regex demo</a>。根据支持正则表达式所需的数字类型和单词边界类型,可以对正则表达式进行调整</p>
<p>当前模式匹配</p>
<ul>
<li><code>\b(?!\d+\b)(\w)\w*</code>-一个单词边界,然后是一个单词字符(捕获到组1中,然后是零个或多个单词字符,但这些单词字符不应构成一个完整的数字序列)</li>
<li><code>|</code>-或</li>
<li><code>\s+</code>-一个或多个空白</li>
</ul>
<p>如果组1匹配,则此大写值为替换值,否则,将删除匹配值(替换值为空字符串)</p>