美文网首页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