看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在做招聘网站 Python 爬虫时,取到薪资范围类似「5000-8000 元/月」这样的文本数据,意为每月的价格为 5000 到 8000,其中包含了最小值和最大值。为了数据分析方便,我们要将其中的最小值和最大值解析出来。
本需求的数据如下:
import pandas as pd
from io import StringIO
data = '''
6000-10000 元/月
8000-13000 元/月
8000-10000 元/月
5000-8000 元/月
'''
df = pd.read_csv(StringIO(data), names=['x'])
df
'''
x
0 6000-10000 元/月
1 8000-13000 元/月
2 8000-10000 元/月
3 5000-8000 元/月
'''
需要提取出每行文本中数值范围部分的最小值和最大值,如第一行,6000 为最小值、10000 为最大值。
由于要处理的数据是文本,我们可以使用 Pandas 的 str 文本数据访问器来调用它的方法。通过分析我们又发现,最小值在文本最左侧,紧接着用「-」连接最大值,我们可以用 .str.split
传入「-」连字符号做分隔,分隔后列表的第一位(索引为 0)就是最小值。
最大值的前后是连字符和空格,我们可以用正则中的「|」来表达这两个分隔符,分隔后第二个(索引为 1)为最大值。
最后,我们用 df.assign
来增加最大值和最小值两列。
实现代码如下:
# 处理代码
(
df.assign(最小值=df.x.str.split('-').str[0])
.assign(最大值=df.x.str.split(r' |-').str[1])
)
'''
x 最小值 最大值
0 6000-10000 元/月 6000 10000
1 8000-13000 元/月 8000 13000
2 8000-10000 元/月 8000 10000
3 5000-8000 元/月 5000 8000
'''
(完)
更新时间:2024-08-18 15:37:21 标签:pandas python 文本