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