<p>第一个<a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.str.rsplit.html" rel="nofollow noreferrer"><strong>^{<cd1>}</strong></a>从右侧开始在第一个空格上拆分:</p>
<pre class="lang-py prettyprint-override"><code>s = df.computer_name.str.rsplit(n=1, expand=True)
# 0 1
# 0 LENOVO 09 X32H0GB
# 1 LENOVO vmhsbpmh613.xyz.biz
# 2 Dell Inc. PowerEdge R910 XKF2S75
# 3 HP ppesfesxb203.corp.123.com
# 4 IBM SoftLayer 13 L89P4567
</code></pre>
<p>然后<a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.str.split.html" rel="nofollow noreferrer"><strong>^{<cd2>}</strong></a>在第一个点上<a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.replace.html" rel="nofollow noreferrer"><strong>^{<cd3>}</strong></a>在前3个字符上<code>xxx</code>:</p>
<pre class="lang-py prettyprint-override"><code>s[1] = s[1].str.split('.', n=1).str[0].replace(r'^...', 'xxx', regex=True)
# 0 1
# 0 LENOVO 09 xxxH0GB
# 1 LENOVO xxxsbpmh613
# 2 Dell Inc. PowerEdge R910 xxx2S75
# 3 HP xxxsfesxb203
# 4 IBM SoftLayer 13 xxxP4567
</code></pre>
<p>并通过重新组合拆分来完成:</p>
<pre class="lang-py prettyprint-override"><code>df.computer_name = s[0] + ' ' + s[1]
# id computer_name
# 0 1 LENOVO 09 xxxH0GB
# 1 2 LENOVO xxxsbpmh613
# 2 3 Dell Inc. PowerEdge R910 xxx2S75
# 3 4 HP xxxsfesxb203
# 4 5 IBM SoftLayer 13 xxxP4567
</code></pre>