美文网首页Pandas学习笔记
Pandas如何提取某一列的数字

Pandas如何提取某一列的数字

作者: 温暖的Lily | 来源:发表于2022-09-01 16:21 被阅读0次

问题的起因是,处理书目数据时,图书价格列均为CNY526.23(全6册),为统计价格,只想保留数字,将查找资料获得的思路记录如下:

1、考虑可以分两步,先去掉CNY,再去掉括号内容。于是查找资料,可以采用代码:data['定价'].map(lambda x: str(x)[3:]),成功去掉CNY。但是括号内容还在。

2、为了去掉括号内容,考虑使用正则表达式,或字符串切片,水平有限,查找了很多资料没有成功。突然觉得思路可以开阔一下,把数字提取出来,或者把其他字符删掉。

代码如下:

price = data['定价']

temp = price.str.extract('(\d+).*?(\d+).*?')#取整数和小数点后面两个部分

new_price = temp[0] + "." + temp[1]#字符串拼接

3、最简单的方法还是正则表达式,之前没有成功原来是方法不对。

data['定价'] = data['定价'].str.extract('(\d+[\.]*\d*)'),其实2中的方法和3就差一点,2只提取数字,分成两部分之后拼接,3就一步完成了

4、同理使用正则,提取分类号

有的数据分类号比较混乱,如这样 ①G886.9-64,或者这样 ① I222-49 ② K825.我只想保留第一个分类号,并且去掉圆圈1。

使用正则进行提取:

data['CIP分类'] = data['CIP分类'].str.extract('([A-Z]+\d*[-\.]*\d*[-\.]*\d*)')

正则表达式确实好用。

相关文章

网友评论

    本文标题:Pandas如何提取某一列的数字

    本文链接:https://www.haomeiwen.com/subject/lqfynrtx.html