Pandas 从字符串中提取数字
Posted
技术标签:
【中文标题】Pandas 从字符串中提取数字【英文标题】:Pandas Extract Number from String 【发布时间】:2016-10-07 14:29:14 【问题描述】:给定以下数据框:
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
完成,但我不确定如何。
【问题讨论】:
【参考方案1】:给它一个正则表达式捕获组:
df.A.str.extract('(\d+)')
给你:
0 1
1 NaN
2 10
3 100
4 0
Name: A, dtype: object
【讨论】:
如果有逗号,我该怎么做:6,000 a
@StevenG 先去掉逗号?
截至 2020 年,此代码会发出 FutureWarning。您可以通过将参数 expand=False
添加到 extract
来绕过它
如果字母后面有数字,这不起作用
这不适用于我的带有数字和单位的列:0.7 mg
【参考方案2】:
要在上面的评论中回答@Steven G 的问题,这应该可行:
df.A.str.extract('(^\d*)')
【讨论】:
【参考方案3】:您可以使用“分配”功能将您的列替换为您的结果:
df = df.assign(A = lambda x: x['A'].str.extract('(\d+)'))
【讨论】:
以上是关于Pandas 从字符串中提取数字的主要内容,如果未能解决你的问题,请参考以下文章
从不在任何其他数字之前或之后的pandas字符串列中提取最多N位数