首页 > 解决方案 > 从熊猫中的字符串中提取带小数的数字

问题描述

我的 pandas 数据框中的一列由数字和字符串值组成。我尝试了几个答案,但我得到了已经只包含数值的单元格的 NaN 值。

例子

Column1
Oh great, 10,7
Awesome, 20.3
1.5
Vaaw, 9/10
100

代码:

df['Column1'] = df['Column1'].str.extract('([0-9][,.]*[0-9]*)')

例如,对于第三行和第四行,我得到了 Nan。我可以在第四排保持 9/10

标签: pythonpandas

解决方案


你很亲密。

df['Column1'] = df['Column1'].str.extract('([0-9]+[,./]*[0-9]*)')
#df
  Column1
0    10,7
1    20.3
2     1.5
3    9/10

另一个可能的正则表达式如下。在此示例中它将产生相同的结果,但更“通用”。它说查找数字,后跟(可能)除空格以外的任何内容,然后是(可能)更多数字。"hello 10f7"对于像返回这样的字符串,它将失败10f7。因此,这取决于您对数据质量的了解。

df['Column1'] = df['Column1'].str.extract('(\d+\W*\d*)')

推荐阅读