Python 熊猫从字符串中提取数字

Python 熊猫从字符串中提取数字,python,string,python-3.x,pandas,Python,String,Python 3.x,Pandas,给定以下数据帧: import pandas as pd import numpy as np df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'], }) df A 0 1a 1 NaN 2 10a 3 100b 4 0b 我想从每个单元格(存在的地方)提取数字。 预期的结果是: A 0 1 1 NaN 2 10 3 100 4 0 我知道

给定以下数据帧:

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':['1a',np.nan,'10a','100b','0b'],
                   })
df

    A
0   1a
1   NaN
2   10a
3   100b
4   0b
我想从每个单元格(存在的地方)提取数字。 预期的结果是:

    A
0   1
1   NaN
2   10
3   100
4   0

我知道可以用
str.extract
完成,但我不确定如何完成。

给它一个正则表达式捕获组:

df.A.str.extract('(\d+)')
给你:

0      1
1    NaN
2     10
3    100
4      0
Name: A, dtype: object

要回答上面评论中@Steven G的问题,这应该是可行的:

df.A.str.extract('(^\d*)')

您可以使用“分配”功能将列替换为结果:

df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))

如果有一个逗号,比如:
6000 a
@steven首先去掉逗号,我该怎么做呢?从2020年开始,这个代码给出了一个未来的警告。您可以通过将参数
expand=False
添加到
extract
来解决此问题。如果字母后面有数字,则此操作无效。此操作不适用于带有数字和单位的列:
0.7 mg