盘点csv文件中工作经验列工作年限数字正则提取的四个方法
回复“书籍”即可获赠Python从入门到进阶共10本电子书
今
日
鸡
汤
吾爱孟夫子,风流天下闻。大家好,我是Python进阶者。
一、前言前几天在Python黄金交流群有个叫【安啦!】的粉丝问了一个Python正则表达式提取数字的问题,这里拿出来给大家分享下,一起学习下。
代码截图如下:
可能有的粉丝不明白,这里再补充下。下图是她的原始数据列,关于【工作经验】列的统计。
现在她的需求是将工作年限提取出来,用于后面的多元回归分析。
二、解决过程这里提供四个解决方法,感谢【Python进阶者】和【月神】提供的方法。前面两种是【Python进阶者】的,后面两个是【月神】提供的,一起来学习下吧!
方法一代码如下:
defwork_year(y):y=y.strip()ify=="无需经验":return0elify=="在校生/应届生":return0elif"-"inyand"年经验"iny:low_experience=re.findall(re.compile("(\d*\.?\d+)"),y)[0]high_experience=re.findall(re.compile("(\d?\.?\d+)"),y)[1]s=round((float(low_experience)+float(high_experience))/2,0)returnselif"年经验"inyor"年以上经验"iny:year=re.findall(re.compile("^(\d+)"),y)[0]returnyearelse:returnydf["new"]=df["工作经验"].apply(work_year)df.head()
运行结果如下图所示:
方法二代码如下:
defwork_year(y):ify=="无需经验":return0elify=="在校生/应届生":return0elif"-"iny:low_experience=re.findall(re.compile("(\d*\.?\d+)"),y)[0]high_experience=re.findall(re.compile("(\d?\.?\d+)"),y)[1]s=round((float(low_experience)+float(high_experience))/2,0)returnselify[0].isnumeric():year=re.findall(re.compile("^(\d+)"),y)[0]returnyearelse:returnydf["col1"]=df["工作经验"].str.strip().apply(work_year)df
运行结果如下图所示:
方法三代码如下:
defwork_year(y):search_year=re.search(r"(\d+)?-?(\d+)",y)defaverage(args):x=tuple(args)length=len(x)returnround(sum(x)/length,0)ifsearch_year:returnaverage([int(i)foriinsearch_year.groups()ifi])else:return0df["new1"]=df["工作经验"].apply(work_year)
这里只需要写一个正则表达式就行了,如果取到值就对取到的值求平均,没有就返回0。
运行结果如下图所示:
方法四代码如下:
df["new2"]=df["工作经验"].str.extract(r"(\d+)?-?(\d+)").astype(float).mean(axis=1).fillna(0).round(0)
这个是用str.extract提取正则,正则表达式和上面一样,用了很多的链式方法,运行结果如下图所示:
所以代码简单了,但是可能不太好懂。
三、总结大家好,我是Python进阶者。这篇文章基于粉丝提问,盘点了csv文件中工作经验列工作年限数字正则提取的三个方法,代码非常实用,可以举一反三,文中针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。
最后感谢粉丝【安啦!】提问,感谢【Python进阶者】、【月神】给出的具体解析和代码演示,感谢粉丝【dcpeng】、【win7】等人参与学习交流。
小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。
-------------------End-------------------
往期精彩文章推荐:
盘点Python内置函数sorted()高级用法实战
手把手教你进行Python网络爬虫中的Charles+Postern抓包
Python网络爬虫之数美滑块的加密及轨迹~~动态js参数分析
盘点Python集合中一个“坑”
欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...