Python——从DataFrame 提取数值

最近发现从系统上下载的文件总是会有其他符号,影响我提取数字,通过搜查之后,解决了这个问题,现在就记录一下。

Python——从DataFrame 提取数值_第1张图片

原始数据是这样的,产品信息里面包含型号、伏级、支数和截面面积,我需要把截面面积提取出来。

首先先引入表格并分解

import pandas as pd
import re

string = r"F:\python310\input\test.xlsx"
df = pd.DataFrame(pd.read_excel(string))
linshi =  df.产品信息.str.rsplit('*',expand = True)
print(linshi)

结果显示如下

            0     1
0   RS 8/9V 2  2.5;
1   YJ 7/5V 1  2.5\
2  FT 3/3V  2  2.5'
3  TV 2/3V  2     4

一开始使用的是re.findall()

>>> re.findall(r"\d\.?\d?",linshi[1])
Traceback (most recent call last):
  File "", line 1, in 
    re.findall(r"\d\.?\d?",linshi[1])
  File "C:\Users\huanglh\AppData\Local\Programs\Python\Python38\lib\re.py", line 241, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object

查了一下原因,linshi的类型为object,就是DataFrame结构里面的字符串类型,强制转换没用

再次查询了DataFrame里面str的子函数,发现了extract。

>>> linshi[1].str.extract (r"\d\.?\d?",expand = True)
Traceback (most recent call last):
  File "", line 1, in 
    linshi[1].str.extract (r"\d\.?\d?",expand = True)
  File "C:\Users\huanglh\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\strings\accessor.py", line 125, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\huanglh\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\strings\accessor.py", line 2529, in extract
    raise ValueError("pattern contains no capture groups")
ValueError: pattern contains no capture groups

要把正则表达式变成捕获组,于是加了个括号。

>>> linshi[1].str.extract (r"(\d\.?\d?)")
     0
0  2.5
1  2.5
2  2.5
3    4

大功告成。

你可能感兴趣的:(python,pandas,数据分析)