基于python的一款数据处理工具pandas

news2024/9/23 1:30:29

在python处理数据的时候,都免不了用pandas做数据处理。在数据处理时,都免不了用数据筛选来提取自己想要的数据,咱们今天就讲讲pandas的条件筛选。

安装库

建议做数据分析的酱友们安装anaconda3,这个包几乎包括了数据分析用的所需要的各种库,安装了anaconda3之后就不需要单独再安装pandas库了,如果没有装的,就需要单独装一下了:

pip install pandas

安装完成后就是引用:

import pandas as pd

数据准备

下面是原始数据:

df=pd.DataFrame({
                '团体保单号': ['BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202210443', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202210443', 'BJG11202210443', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263', 'BJG11202003263'],

                '姓名': ['刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '刘玲', '卜琳琳', '齐静', '齐静', '齐静', '刘洋', '刘洋', '刘洋', '刘洋', '杨海舰', '杨海舰', '范晶晶', '范晶晶'],

                '出险人证件号码': ['04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '04211972071536', '01061975060836', '01021973072519', '01021973072519', '01021973072519', '02831982063006', '02831982063006', '02831982063006', '02831982063006', '02221987062064', '02221987062064', '01041980070720', '01041980070720'],

                '交易流水号': ['220102000542', '220102000565', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220102000671', '011100030X220104016042', '021100020A220111013035', '081100030A220105005676', '081100030A220105006493', '011100020A220117005278', '011100020A220117005278', '011100020A220117005278', '011100020A220117005278', '011100050Y220104008654', '011100050Y220104008655', '011100050Y220106008912', '011100050Y220106008914', '011100050Y220107000858', '011100050Y220107001477', '011100050Y220107012903', '011100050Y220107013093'],

                '赔付金额': [0, 260.18, 57.67, 57.67, 57.67, 57.67, 57.67, 166.63, 0, 0, 231.09, 396.32, 396.32, 396.32, 396.32, 0, 35, 0, 35, 0, 272.9, 0, 188],

                '事故日期': ['2022-01-02', '2022-01-02', '2021-01-02', '2022-01-02', '2021-01-02', '2021-01-02', '2022-01-02', '2020-01-04', '2022-01-11', '2022-01-05', '2020-01-05', '2022-01-17', '2022-01-17', '2022-01-17', '2022-01-17', '2022-01-04', '2022-01-04', '2022-01-06', '2022-01-06', '2022-01-07', '2022-01-07', '2022-01-07', '2022-01-07']

                '出院日期': ['2022-01-02', '', '2022-01-02', '', '2021-01-02', '', '', '2021-01-04', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '2022-01-07']
                })

输出如下:

    团体保单号        姓名  出险人证件号码   交易流水号              赔付金额 事故日期    出院日期
0   BJG11202003263   刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1   BJG11202003263   刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
2   BJG11202003263   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2022-01-02
3   BJG11202003263   刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
4   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2021-01-02
5   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02        NaT
6   BJG11202210443   刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
7   BJG11202210443   刘玲  04211972071536  011100030X220104016042  166.63 2020-01-04 2021-01-04
8   BJG11202210443   刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9   BJG11202210443   刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT
10  BJG11202210443   刘玲  04211972071536  081100030A220105006493  231.09 2020-01-05        NaT
11  BJG11202003263  卜琳琳  01061975060836  011100020A220117005278  396.32 2022-01-17        NaT
12  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
13  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
14  BJG11202003263   齐静  01021973072519  011100020A220117005278  396.32 2022-01-17        NaT
15  BJG11202210443   刘洋  02831982063006  011100050Y220104008654    0.00 2022-01-04        NaT
16  BJG11202210443   刘洋  02831982063006  011100050Y220104008655   35.00 2022-01-04        NaT
17  BJG11202003263   刘洋  02831982063006  011100050Y220106008912    0.00 2022-01-06        NaT
18  BJG11202003263   刘洋  02831982063006  011100050Y220106008914   35.00 2022-01-06        NaT
19  BJG11202003263  杨海舰  02221987062064  011100050Y220107000858    0.00 2022-01-07        NaT
20  BJG11202003263  杨海舰  02221987062064  011100050Y220107001477  272.90 2022-01-07        NaT
21  BJG11202003263  范晶晶  01041980070720  011100050Y220107012903    0.00 2022-01-07        NaT
22  BJG11202003263  范晶晶  01041980070720  011100050Y220107013093  188.00 2022-01-07 2022-01-07

单条件筛选

比如我只是筛选2021年的数据,可以这样:

# “事故日期”列转换成时间类型
df['事故日期'] = pd.to_datetime(df['事故日期'])
df['出院日期'] = pd.to_datetime(df['出院日期'])

# 提取2021年的数据
df = df[df['事故日期'].dt.year == 2021]

日期列不转换的话会报错,必须要转换成时间类型才行,可以用df.dtpes来查看各字段的数据类型,转换前后对比:

.dt.year是用来提取日期的年份的,不提取年份不会报错,只是提取不出数据,因为事故日期不止有年份,还有日期

输出:

   团体保单号       姓名  出险人证件号码   交易流水号             赔付金额 事故日期    出院日期
2  BJG11202003263  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02 2022-01-02
4  BJG11202210443  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02 2021-01-02
5  BJG11202210443  刘玲  04211972071536  011100030X220102000671  57.67 2021-01-02        NaT

多条件筛选

我们首先用出险人证件号码和事故日期来筛选数据。

比如证件号为04211972071536的和年份为2022年的筛选,因为上面已经把日期转换成时间类型了,后面就不重复转换了

# 提取身份证为04211972071536和年份为2022年的数据
df = df[(df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022)]

输出:

   团体保单号       姓名  出险人证件号码    交易流水号             赔付金额 事故日期    出院日期
0  BJG11202003263  刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1  BJG11202003263  刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
3  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
6  BJG11202210443  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
8  BJG11202210443  刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9  BJG11202210443  刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT

注意看,坑来啦:

在单条件筛选的时候,筛选条件直接列出来就行了df[df['事故日期'].dt.year == 2021]

而在多条件筛选的时候,就需要加入小括号把列出的条件括起来才行df[(df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022)]

接下来,我们提取身份证为04211972071536,事故日期为2022年的数据,如果有出院日期按出险日期为准。

# 提取身份证为04211972071536,事故日期为2022年的数据,如果有出院日期按出险日期为准
df = df[((df['出险人证件号码']=='04211972071536')&(df['出院日期'].dt.year == 2022))|((df['出险人证件号码']=='04211972071536')&(df['事故日期'].dt.year == 2022))]

输出:

   团体保单号       姓名  出险人证件号码    交易流水号             赔付金额 事故日期    出院日期
0  BJG11202003263  刘玲  04211972071536            220102000542    0.00 2022-01-02 2022-01-02
1  BJG11202003263  刘玲  04211972071536            220102000565  260.18 2022-01-02        NaT
2  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2021-01-02 2022-01-02
3  BJG11202003263  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
6  BJG11202210443  刘玲  04211972071536  011100030X220102000671   57.67 2022-01-02        NaT
8  BJG11202210443  刘玲  04211972071536  021100020A220111013035    0.00 2022-01-11        NaT
9  BJG11202210443  刘玲  04211972071536  081100030A220105005676    0.00 2022-01-05        NaT

注意,每个单独的条件要括起来,组合的条件还要再括起来才行。

怎么样,只要理解了筛选条件的设置规则,我们就可以用多个条件来筛选自己想要的数据啦!

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

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

相关文章

【博客623】Prometheus一条告警的触发流程与等待时间

Prometheus一条告警的触发流程与等待时间 1、与告警等待时间相关的参数 prometheus.yml global:# 数据采集间隔scrape_interval: 15s # 评估告警周期evaluation_interval: 15s # 数据采集超时时间默认10s# scrape_timeoutalertmanager.yml # route标记:告警…

Python urllib

Python urllib Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 本文主要介绍 Python3 的 urllib。 urllib 包 包含以下几个模块: urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse …

剑指Offer专项突击版题解八

71.按权重生成随机数 思考:说到平均的生成随机数,想到了水塘抽样法和彩票调度法。 水塘抽样算法适合于样本不确定,乃至于是变化的,每个样本的概率是一样的。 // 样本nums[],每个元素的被抽到的概率是一样的 index : 0 for i : 1;…

Kubernetes03:kubernetes 功能和架构

2.1 概述 Kubernetes 是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过 Kubernetes 能够进行应用的自动化部署和扩缩容。在 Kubernetes 中,会将组成应用的容 器组合成一个逻辑单元以更易管理和发现。Kubernetes 积累了作为 Google 生产环…

时序预测 | Python实现TCN时间卷积神经网络时间序列预测

时序预测 | Python实现TCN时间卷积神经网络时间序列预测 目录 时序预测 | Python实现TCN时间卷积神经网络时间序列预测预测效果基本介绍环境准备模型描述程序设计学习小结参考资料预测效果 基本介绍 递归神经网络 (RNN),尤其是 LSTM,非常适合时间序列处理。 作为研究相关技术…

生成模型技术发展过程

生成模型生成模型和判别模型的差异生成模型的目标是在给定了数据集D,并且假设这个数据集的底层分布(underlying distribution)是Pdata,我们希望够近似出这个数据分布。如果我们能够学习到一个好的生成模型,我们就能用这个生成模型为下游任务做…

【项目立项管理】

项目立项管理 很杂,可以根据左边的列表查看自己不会的 。。。 立项管理主要是解决项目的组织战略符合性问题 开发所需的成本和资源属于经济可行性 承建方组织资源和项目的匹配程度 内部立项目的: 为项目进行资源分配,确定项目绩效目标&am…

字节二面:10Wqps超高流量系统,如何设计?

超高流量系统设计思路 前言 在40岁老架构师 尼恩的**读者交流群(50)**中,大流量、高并发的面试题是一个非常、非常高频的交流话题。最近,有小伙伴面试字节时,遇到一个面试题: 10Wqps超高流量系统,该如何设计&#xf…

湿度敏感性等级(MSL)

趁着周末得空,也有意愿,赶紧把之前一直想写的这个主题完成了。 湿度敏感性等级,相信大部分人还是比较陌生的。 湿度敏感性等级:MSL,Moisture sensitivity level 之所以有这个等级,大概是因为以下原因&a…

软考高级-信息系统管理师之进度管理(最新版)

项目进度管理 项目进度管理1概述2项目进度管理过程2.1规划进度管理1、规划项目进度管理目的2、规划进度管理:输入3、规划进度管理:输出2.2定义活动1、为了更好地规划项目2、定义活动过程就是3、定义活动:输入4、定义活动:输出2.3排列活动顺序1、排列活动顺序2、排列活动顺序:输…

19 顺序存储二叉树

文章目录1 顺序存储二叉树的概念1 顺序存储二叉树的概念 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组,看右面的示意图。 要求: 1) 右图的二叉树的结点,要求以数…

Git常用命令以及如何在IDEA中使用Git

前言Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。Git在管理文件过程中会记录日志,方便回退到历史版本;Git存在分支的概念,一个项目可以有多个分支&…

linux014之进程和服务管理

linux中的进程管理: 查看进程命令: ps :查看应用级别的进程 ps -e: 查看系统应用级的进程 ps -ef :显示进程的全部信息(这个命令经常用) ps -ef|grep 关键字: 查看带有关键字的进程 关闭进程命令&#xff1…

win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0

win11pytorch1.7.0python3.8cuda11.0写在最前面一. 软件配备二. 创建虚拟环境2.1 创建环境名称,并选择‘y’2.2.进入虚拟环境三. 安装pytorch四. 安装虚拟环境下的notebook4.1 安装ipykernel,并选择‘y’,直至安装完成4.2 将环境名注册到note…

安全—09day

XSS1. XSS的原理2. Xss漏洞分类2.1 反射性xss2.2 存储型XSS2.3 基于DOM的 XSS2.4 XSS漏洞的危害3. XSS的各种bypass技巧4. 从 XSS Payload 学习浏览器解码5. 浏览器解析机制5.1 HTML中有五类元素:5.2 五类元素的区别1. XSS的原理 恶意攻击者往Web页面里插入恶意Scr…

AcWing:4861. 构造数列、4862. 浇花(C++)

目录 4861. 构造数列 问题描述: 实现代码: 4862. 浇花 问题描述: 实现代码: 4861. 构造数列 问题描述: 我们规定如果一个正整数满足除最高位外其它所有数位均为 00,则称该正整数为圆数。 例如&…

Redis基础操作以及数据类型

目录 Redis基础操作 java中的i是不是原子操作?不是 数据类型 1. list 2. set 3. Hash哈希 4. Zset有序集合 Redis基础操作 set [key] [value] 设置值 (设置相同的会将原先的覆盖) get [key] 获取值 不能覆盖和替换 ttl [key] 以秒为单…

【uniapp】开发一款手机端go语言教程软件

文章目录介绍数据源体验优化总结介绍 闲来无事,折腾一款 go语言教程软件,软件使用uniapp-cli,vue2编写。 界面很简单,侧边栏为目录,主页是由markdown渲染的正文。 单击悬浮按钮打开目录,双击回到正文顶部。…

MySQL知识汇总:MySQL函数CASE WHEN用法详解

Case When的两种简单用法 用法一: CASE seasonWHEN Spring THEN 春天 WHEN Summer THEN 夏天 WHEN autumn THEN 秋天 else 冬天 end 用法二: CASE WHEN season Spring THEN 春天WHEN season Summer THEN 夏天WHEN season autumn THEN 秋天 els…

chatGPT与人形机器人,高泽龙接受中国经营报采访谈二者发展

1.相较于Chatgpt,人形机器人的市场前景有多大?答:人形机器人的市场前景可以用“无限大”来形容,这看起来很夸张而且并不合理,其实是客观而且中肯的。因为这个问题就仿佛是五十年前,人们问“未来的电脑市场有…