一,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中的掩码来过滤。方法很多希望灵活应用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

pythoncontains方法_Python extract及contains方法代码实例相关推荐

  1. python真正实现多线程的方法_python多线程几种方法实现

    匿名用户 1级 2018-05-27 回答 Python进阶(二十六)-多线程实现同步的四种方式 临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能, ...

  2. python中的str方法和repr方法_Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些

    Python中 的 __str__ 方法和 __repr__ 方法的区别有哪些 发布时间:2020-11-05 17:11:48 来源:亿速云 阅读:95 作者:Leah 本篇文章给大家分享的是有关P ...

  3. python find的使用方法_Python中的rfind()方法使用详解

    Python中的rfind()方法使用详解 rfind()方法返回所在子str 被找到的最后一个索引,或者-1,如果没有这样的索引不存在,可选择限制搜索字符串string[beg:end]. 语法 以 ...

  4. python中lt方法_Python的富比较方法__lt__、__gt__之间的关联关系分析

    Python的富比较方法包括__lt__.__gt__分别表示:小于.大于,对应的操作运算符为:"".那么是否象普通数字运算一样,这两个方法之间存在互反的关系呢? Python没有 ...

  5. python描述符魔术方法_Python类型转换的魔术方法详解

    本文讨论python中将某个复杂对象转换为简单对象或数据类型的常用魔术放啊,这些在编程中是十分有用的. 1.__str__方法. 在讲解本方法前我们先打开一个jupyter notebook,随意创建 ...

  6. python new方法_Python中的__new__()方法的使用

    __new__() 函数只能用于从object继承的新式类. 先看下object类中对__new__()方法的定义: class object: @staticmethod # known case ...

  7. python中集合比大小方法_Python集合17个方法详解

    Python 中的集合类似于数学中的集合概念,它是一组无序.不可重复数据的组合.集合用{ ...}创建,某种程度上可以把集合看作是没有值的字典.集合是Python里面非常重要的数据类型,其中的方法总共 ...

  8. python文字游戏源代码求年纪_Python实现猜年龄游戏代码实例

    1. 在猜年龄的基础上编写登录.注册方法,并且把猜年龄游戏分函数处理,如 2. 登录函数 3. 注册函数 4. 猜年龄函数 5. 选择奖品函数 代码如下 import json real_age = ...

  9. 获取python脚本的返回值_Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...

最新文章

  1. 浅谈“闭包”,什么才是“闭包”思想!—— javascript
  2. 跳槽季最狗血的面试经历,没有之一...
  3. 死磕java_死磕JavaScript-垃圾收集机制
  4. 相亲有风险,且行且珍惜!| 今日最佳
  5. 几款经典好用的Android,经典实用 Android十款生活必备软件推荐
  6. 蓝桥杯 ALGO-95 算法训练 2的次幂表示
  7. 使用海康H5视频播放器开发包实现监控播放
  8. 如果公司不用绩效考核,用什么
  9. 【Flutter实战静态页面】--在线点餐app(7)——页面跳转
  10. 2015.4.28 今天开博客了
  11. 微信订阅号申请流程及准备材料
  12. 3个月免费云服务器,10+行业解决方案,阿里再推企业上云浪潮
  13. html 掉爱心特效,微信发什么会掉爱心特效(微信特效词语合集)
  14. 什么是SVN?SVN的简介安装和使用
  15. XCTF练习题---CRYPTO---wtc_rsa_bbq
  16. Linux-Journal
  17. 柱纵向钢筋长度计算机械连接,柱钢筋计算公式图解
  18. android开启加速功能,Android硬件加速开发简介
  19. 换道超车 区块链是你的捷径
  20. 全国计算机二级python 培训

热门文章

  1. Android多线程断点续传,BAT大厂面试总结
  2. JavaScript 数组去重方法合集(简洁易懂)
  3. pymongo.errors.OperationFailure: Authentication failed., full error: {‘ok‘: 0.0, ‘errmsg‘: ‘Authenti
  4. sql查询结果列转行
  5. 多线程数据交换工具Exchanger完全解析
  6. 【Linux】Ubuntu 20.04安装教程(图文详解)
  7. vb调用excel方法大全
  8. 华泰人工智能系列_2020人工智能(25份)
  9. 【Git技术】IDEA配置git及对项目创建git分支的方法
  10. 导入Java工程到Eclipse时出现“selection does not contain”解决办法