python extract的使用_Python extract及contains方法代码实例

一,extract方法的使用

extract函数主要是对于数据进行提取。场景一般对于DataFrame中的一列中的数据进行提取的场合比较多。

例如一列中包含了很长的字段,我们希望在这些字段中提取出我们想要的字段时,就可以通过extract方法进行数据的提取了。

好了,废话不多说直接上代码。

数据源

序号 姓名 服务卡卡号 消费地点 消费时间 理赔金额(元) 交易明细 数量

1 张三 8100001 我爱花钱连锁有限公司 2020/3/1 8:02 605 珍牡肾骨胶囊(珍泉)0.63g*48粒*3盒 1

2 张三 8100001 我爱花钱连锁有限公司 2020/3/1 8:02 1225 桂龙药膏(葛洪)202g*6瓶 1

3 张三 8100001 我爱花钱连锁有限公司 2020/3/2 10:58 27 胆宁片(上药牌)0.36g*60片/瓶 1

4 李四 8100002 我爱花钱连锁有限公司 2020/3/1 9:20 30 阿莫西林胶囊0.5g*24粒/盒 3

5 李四 8100002 我爱花钱连锁有限公司 2020/3/1 9:20 5 氨咖黄敏胶囊(康麦尔)12粒/盒 1

6 李四 8100002 我爱花钱连锁有限公司 2020/3/4 14:26 51 阿归养血口服液(中联)10ml*24支/盒 1

7 李四 8100002 我爱花钱连锁有限公司 2020/3/4 14:26 5 氨咖黄敏胶囊(康麦尔)12粒/盒 1

8 李四 8100002 我爱花钱连锁有限公司 2020/3/9 17:56 28 胆宁片(上药牌)0.36g*60片/瓶 1

9 李四 8100002 我爱花钱连锁有限公司 2020/3/19 11:19 56 柴石退热颗粒(德众)8g*6袋/盒 1

10 李四 8100002 我爱花钱连锁有限公司 2020/3/21 16:04 68 醒脾胶囊0.3g*30粒 1

11 李四 8100002 我爱花钱连锁有限公司 2020/3/31 10:00 60 小败毒膏(东方博爱)10g*8袋 1

12 王五 8100003 我爱花钱连锁有限公司 2020/3/1 10:43 114 枣仁安神液10ml*7支 1

13 王五 8100003 我爱花钱连锁有限公司 2020/3/17 10:40 118 益气维血颗粒(红珊瑚)10g*15袋 1

14 王五 8100003 我爱花钱连锁有限公司 2020/3/21 8:19 615 比卡鲁胺片(双益安)50mg*14s*2板 1

15 王五 8100003 我爱花钱连锁有限公司 2020/3/1 10:56 120 消痛贴膏(奇正)1.2g:2.5ml*10贴/盒 1

16 王五 8100003 我爱花钱连锁有限公司 2020/3/1 12:56 198 复方首乌地黄丸(修正)3g*10袋*3小盒 1

17 王五 8100003 我爱花钱连锁有限公司 2020/3/1 12:56 28 胆宁片(上药牌)0.36g*60片/瓶 1

18 王五 8100003 我爱花钱连锁有限公司 2020/3/1 13:53 256 河车大造丸(同仁堂)9g*10丸/盒 1

19 赵六 8100004 我爱花钱连锁有限公司 2020/3/1 14:52 7 复方氨酚烷胺片(新迪)12片/盒 1

20 赵六 8100004 我爱花钱连锁有限公司 2020/3/1 14:52 149 法莫替丁分散片20mg*36片/盒 1

21 赵六 8100004 我爱花钱连锁有限公司 2020/3/9 19:56 100 朱砂安神丸6g*10袋 1

22 赵六 8100004 我爱花钱连锁有限公司 2020/3/9 19:56 23 清热消炎宁片0.4g*24片/盒 1

23 赵六 8100004 我爱花钱连锁有限公司 2020/3/1 15:16 30 多酶片100s/盒 1

24 赵六 8100004 我爱花钱连锁有限公司 2020/3/1 15:16 1139 补肺丸(养无极)9g*10丸*16板 1

25 赵六 8100004 我爱花钱连锁有限公司 2020/3/5 17:25 170 补肾益寿片(恒修堂)0.4g*100片 1

26 赵六 8100004 我爱花钱连锁有限公司 2020/3/5 17:25 800 益安宁丸72丸*2瓶(每18丸重3.1g) 1

27 赵六 8100004 我爱花钱连锁有限公司 2020/3/9 17:39 800 益安宁丸72丸*2瓶(每18丸重3.1g) 1

28 赵六 8100004 我爱花钱连锁有限公司 2020/3/11 17:30 480 七十味珍珠丸(甘露)1g*6s 1

29 赵六 8100004 我爱花钱连锁有限公司 2020/3/22 16:58 1154 双参龙胶囊45盒装0.3g*24s*45盒 1

30 杨七 8100005 我爱花钱连锁有限公司 2020/3/1 16:54 100 朱砂安神丸6g*10袋 1

31 杨七 8100005 我爱花钱连锁有限公司 2020/3/12 20:53 14 消痔灵片0.3g*24片 1

32 杨七 8100005 我爱花钱连锁有限公司 2020/3/18 10:04 402 回元堂 固本回元口服液 20ml*24瓶20ml*24瓶 1

33 杨七 8100005 我爱花钱连锁有限公司 2020/3/21 11:18 847 伏立康唑分散片(复锐)0.2g*6s 1

34 杨七 8100005 我爱花钱连锁有限公司 2020/3/1 17:36 30 多酶片100s/盒 1

代码

这里是通过jupyter来分段显示的。第一次看我文章的小伙伴如果不了解jupyter可以在复制下面代码的时候把所有输出改成通过print()的方式输出

#%%

import pandas as pd

import re

#需求:

# 1. 把交易明细分成明细跟规格两列并删除交易明细这列

# 2. 明细中把例如珍牡肾骨胶囊(珍泉)的作为明细,0.63g*48粒*3盒作为规格拆分提取

#读取源数据

df = pd.read_excel("./datas/extract案例演示数据.xlsx")

#%%

#提取交易明细这一列

get_column = df["交易明细"]

#通过正则提取数据(?P)为固定写法给数据加新列名

df01 = get_column.str.extract(R"(?P[u4E00-u9FA5]+(*[u4E00-u9FA5]+)*)")

df02 = get_column.str.extract(R"(?P(?:0.|w*)w**w*[u4e00-u9fa5](?:S+|))")

#%%

#通过join函数合并2个DataFrame

join_data = df01.join(df02)

join_data

#%%

#删除原有交易明细数据

del df["交易明细"]

df

#%%

#二次合并,删除后交易明细的dataframe合并拆分后数据的dataframe

two_join = df.join(join_data)

#%%

#因为合并后存在排序问题,列名为汉字所以我通过loc方法进行的列名指定排序

#loc方法这里不再讲解,请参照loc,iloc篇章

result = two_join.loc[:,["序号","姓名","消费地点","消费时间",

"理赔金额(元)","明细","规格","数量"]]

result

#%%

#输出到Excel

result.to_excel("./datas/extract_结果.xlsx",index=False)

print("文件写入完毕!!")

#%%

结果

二,contains方法的使用

contains对比extract而言更多的不是提取,而是一种筛选。有种想python中的in的关系。

只要查询的DataFrame的某列或者某行包含查询字符串的部分字段就可以匹配出所有匹配到的数据。当然可以直接传字符串也可以通过正则来进行筛选。

数据源

学员编号 学生姓名 学生年龄 手机号码 E-mail地址 家庭住址

101 刘鹏 18 13599713364 www.zhangsan@qq.com 江苏省苏州市工业园区津梁街

102 李四 20 15923796671 www.lisi.163.com 北京市朝阳区西北路石井街22幢

103 赵五 17 18655301183 www.zhaofive.yahoo.com 山东省烟台市芝罘区北大街55号

104 tony 30 15877563321 www.tonyliu.ibm.com 江苏省苏州市姑苏区山塘街177号

105 马云 47 15977560013 www.mayun.alibaba.com 浙江省杭州市西湖路110号1888

106 Jack 20 13677569901 www.jack123@qq.com 广东省深圳市南山区西丽1592幢12

107 tom 19 18622349971 www.tom456@qq.com 山东省青岛市人民路1234幢

代码:这里通过jupyter分段来显示结果

#%%

import pandas as pd

import re

df = pd.read_excel("./datas/Person_info1.xlsx")

#%%

#传入正则匹配只要包含的数据

df.loc[df["家庭住址"].str.contains(r"d")]

结果

通过字符串筛选数据

#%%

#传入字符串,contains属于模糊查找.只要包含就筛选

df.loc[df["家庭住址"].str.contains(r"津梁街")]

#%%

df.loc[df["家庭住址"].str.contains("江苏省")]

结果

另外contains可以二次多次运用。因为涉及到保密数据不方便展示复杂数据。大家可以先尝试按照上面的简单数据,先过滤出家庭地址,再过滤出来年龄。

当然也可以通过loc中的掩码来过滤。方法很多希望灵活应用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持云海天教程。

原文链接:https://www.cnblogs.com/liupengpengg/p/13534757.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hexo-Fluid主题使用手册

hexo-Fluid主题使用手册 [官网] https://fluid-dev.github.io/hexo-fluid-docs/ 前言 Fluid 是一款很十分优雅的主题,那么写一篇优雅的文章搭配它呢?以下会从几个方面来简述,主要还是做几个推荐。 文章内容 熟悉 Markdown 语法 对于使…

怎么用python做战斗机_关于python文件操作

总是记不住API。昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧:python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()返回指定目…

Hexo-fluid主题设置统计博客阅读量

Hexo-fluid主题设置统计博客阅读量 开始小插曲: 我使用的是sublime文本编辑器: [官网] https://www.sublimetext.com/ 正戏开始 查找关键字:web_analytics (快捷键ctrlF) 这里我使用一个第三方服务Leancloud来统计文章的阅读量。 首先…

使用Hexo写博客

尽管 Hexo 支持 MarkDown,但是我们却不能像写单独的 MarkDown 文档时那样肆无忌惮。由于我们所写的文档是需要被解析为静态网页文件的,所以我们必须严格遵从 Hexo 的规范,这样才能解析出条理清晰的静态网页文件。新建文档 假设我们的文章名为…

mysql过滤效率和java过滤效率_如何合理选择初中高效过滤器的效率?

利菲尔特环保科技点击蓝字 关注我们 各种型号的空气过滤器有不同的标准和使用效率,今天利菲尔特为您介绍各种类型的空气过滤器在不同地方的应用。一般情况下,最末一级过滤器决定空气净化的程度,上游的各级过滤器只起保护作用&…

宝塔面板搭建autoPicCdn:一款基于jsdelivr-Github的免费CDN图床

autoPicCdn是白嫖Github的存储空间,通过jsdelivr全球加速(含有国内节点)。实现图床加速的目的。加速效果非常不错,用站长工具检测,也是一片绿油油,所以用来存储一些静态文件是最合适不过了。 相关文章:GithubjsDelivrP…

物流设计大赛优秀作品_中国外运杯第七届全国大学生物流设计大赛案例专家评审会在京召开...

2020年9月10日,“中国外运杯”第七届全国大学生物流设计大赛案例专家评审会在京召开。中国物流与采购联合会副会长任豪祥、中国物流与采购联合会原副会长、中国物流与采购联合会专家委员会主任戴定一、中国外运股份有限公司首席数字官高翔等有关领导及来自行业企业、…

WordPress博客网站搬家和换域名方法

WordPress博客网站搬家和换域名方法方案一 开设个人博客的朋友使用WordPress不在少数,那么也难免不了更换空间和域名的情况,由于笔者亲历了一次更换空间和域名的情况,将博客从AAA.com 更改为 BBB.com,所以本文就分享一下更换域名…

Hexo部署出现错误err-Error-Spawn-failed解决方式

Hexo部署出现错误err: Error: Spawn failed解决方式部署过程中可能会出现错误 fatal: unable to access https://github.com/a956551943/a956551943.github.io/: Encountered end of file FATAL {err: Error: Spawn failedat ChildProcess.<anonymous> (/usr/local/src/h…

python输出国际象棋棋盘_python输出国际象棋棋盘的实例分享

国际象棋是当今国际上最流行的智力体育运动项目。青年人下棋可以锻炼思维、增强记忆力和培养坚强的意志&#xff1b;中年人下棋可以享受美学&#xff1b;老年下棋可以很好的休息娱乐。国际象棋游戏有自己的规则&#xff0c;需要两个人将棋子落在棋盘上。棋子落在棋盘上事件&…

细思极恐---十年生死两茫茫,通信人,意欲亡。

每一位通信人&#xff0c;都可能面对过来自亲友的“灵魂三问”。 “通信究竟是什么&#xff1f;” “通信从哪里来&#xff1f;” “通信要往哪里去&#xff1f;” 讲真的&#xff0c;我不知道。。。。本篇博文是模仿codesheep羊哥写的&#xff0c;因为我们都学的通信&#x…

python矩阵运算dot_numpy中的dot矩阵乘法

本来以为这辈子都和数学没啥关系了&#xff0c;结果遇到了np.dot()。numpy中的“*”和“dot”运算是完全不同的&#xff0c;前者是直接计算&#xff0c;后者是矩阵相乘。(venv) [rootlocalhost tf]# pythonPython 3.4.5 (default, May 29 2017, 15:17:55)[GCC 4.8.5 20150623 (…

归并排序--Java

归并排序&#xff1a; 排序原理&#xff1a; 1、尽可能的一组数据拆分成两个元素相等的子组&#xff0c;并对每一个子组继续拆分&#xff0c;知道拆分后的每个子组的元素个数是1为止。 2、将相邻的两个子组进行合并成一个有序的大组 3、不断重复步骤2&#xff0c;直到最终只…

9008刷机模式写入超时刷机帮_刷机时没有成功,然后变成黑砖,usb接口直接变成未知设备~希望大神救助!...

线刷宝用户协议本协议是用户 (自然人、法人或社会团体)与杭州登先网络科技有限公司(以下简称"登先网络")之间关于"线刷宝"软件产品(以下简称"本软件产品")的法律协议。一旦安装、复制或以其他方式使用本软件产品&#xff0c;即表示同意接受协议各…

希尔排序--Java

希尔排序 排序原理&#xff1a; 1、选定一个增量h&#xff0c;按照增长量h作为数据分组的依据&#xff0c;对数据进行分组 2、对分好组的每一组数据完成插入排序 3、减小增长量&#xff0c;最小减为1&#xff0c;重复第二步操作 其中&#xff0c;希尔排序确定增长量h的规则…

插入排序--Java

插入排序&#xff1a; 原理&#xff1a; 1、把所有的元素分为两组&#xff0c;已经排序的和未排序的 2、找到未排序的组中的第一个元素&#xff0c;向已经排序的组中进行插入 3、倒叙遍历已经排序的元素&#xff0c;依次和待插叙的元素进行比较&#xff0c;直到找到一个元素…

redis 缓存预热_Redis:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级

一、缓存雪崩缓存雪崩我们可以简单的理解为&#xff1a;由于原有缓存失效&#xff0c;新缓存未到期间(例如&#xff1a;我们设置缓存时采用了相同的过期时间&#xff0c;在同一时刻出现大面积的缓存过期)&#xff0c;所有原本应该访问缓存的请求都去查询数据库了&#xff0c;而…

用接口写冒泡排序

用接口写冒泡排序&#xff1a; package demo02.maopaoapi.Bubble; public class Bubble {/***对数组a中的元素进行排序*/public static void sort(Comparable[] a){for (int i a.length-1; i >0; i--) {for (int j 0; j < i; j) {//比较索引j和索引j1处的值if (greate…

vue 根据swagger 生成接口_采用vue编写的功能强大的swagger-ui页面

think-swagger-ui-vueleswagger-ui有非常多的版本&#xff0c;觉得不太好用&#xff0c;用postman&#xff0c;每个接口都要自己进行录入。所以在基于think-vuele进行了swagger格式json的解析&#xff0c;自己实现了一套swaggerui界面。swagger分为后端数据提供方方和前端页面展…

选择排序--Java

选择排序&#xff1a;合适的元素放在合适的位置 1、每一次遍历的过程中&#xff0c;都假定第一个索引处的元素是最小值&#xff0c;和其他索引处的值依次进行比较&#xff0c;如果当前索引处的值大于其他某个索引处的值&#xff0c;则假定其他某个索引处的只为最小值&#xff…