擅长:python、mysql、java
<p>你可以用</p>
<pre><code>\d+(?=.*\|)
</code></pre>
<p>唯一的改变是在管道前面的lookahead中添加<code>.*</code>,以查找管道后面的任何内容</p>
<hr/>
<p>要在<code>dataframe</code>中利用此函数创建一个只包含数字的新列,我们可以使用<code>extract()</code></p>
<p>要做到这一点,我们需要通过在<code>()</code>之间封装模式,将上面的<code>regex</code>放在捕获组中</p>
<pre><code>r'(\d+(?=.*\|))'
</code></pre>
<hr/>
<p>代码</p>
<pre><code>d = ['S10|1828575',
'S10|1828575',
'S10|1828575',
'S10|1828575',
'SA510KPBF|47010705',
'SA510KPBF|47010705',
'SABLF|47009610',
'SABLF|47009610',
'SABLF|47009610']
df = pd.DataFrame(data=d)
df['numbers'] = df[0].str.extract(r'(\d+(?=.*\|))')
</code></pre>
<p>输出</p>
<pre><code>>>> df
0 numbers
0 S10|1828575 10
1 S10|1828575 10
2 S10|1828575 10
3 S10|1828575 10
4 SA510KPBF|47010705 510
5 SA510KPBF|47010705 510
6 SABLF|47009610 NaN
7 SABLF|47009610 NaN
8 SABLF|47009610 NaN
</code></pre>