网站首页 > 技术文章 正文
前言
最近有小伙伴推荐我多写写一个增强 pandas 功能的库—— pyjanitor 。他提供了许多实用功能,结合 pandas 使用能够大大提升我们的代码效率,那么我就针对这个库做一个系列教程。
不过,我不喜欢只是到官网抄一下例子,把英文翻译成中文,草草了事。我也不希望大家只是记住了 pyjanitor 的一些方法名字,只会简单套用。
因此,这个系列的文章我会挑选 pyjanitor 的一些方法做讲解,同时会给出 pandas 的实现,还教你怎么自己封装函数。
本系列文章的基本结构:
- pyjanitor 函数讲解
- pandas 原生实现
- 自己封装一个函数
pyjanitor 安装:
pip install pyjanitor
今天的主题是多条件判断,分支判断取值是数据处理的高频操作。往往初学者会使用 apply 遍历每一行,使用 python 的 if else 语法完成需求。如下:
数据:
代码:
- 新增一列 value,里面就是一大堆的逻辑判断
代码倒是不复杂,但是条件很多,数据也多的情况下,代码就会难看,并且代码的执行速度也不行。
pyjanitor 的 case_when
代码来自于官网
结果是对了,但是感觉 case when 方法里面的东西很乱呀
我来标注一下:
- 红色框是条件,绿色框是返回值
但是,我们不是一定要使用 janitor 才能做到这一切。结合 numpy 我们也能轻易做到
numpy 也有 case when
如果你学过我的 pandas 专栏,那么就一定听过 numpy 的两个条件函数,这里我们只需要用 select 就可以轻易做到多条件分支
关于 np.select 详细讲解,可以查看专栏文章
那么,我们该如何自己写一个类似 janitor 的函数,方便以后重复使用?
自己写一个也不难
首先,不管三七二十一,定义一个函数,把之前的 numpy 实现代码复制进去:
这里有几个问题:
- 参数有哪些
- 尽量不要直接修改数据源,现在我们是直接赋值一列到 df 里面
先加上参数:
- 参数 df:总要传入数据吧
- *conditions:分支条件的数量是无限的,所以需要使用 * ,表示不管你传入多少个参数,我都接下来,放进去 conditions 这个变量里面。所以,conditions 是一个元组
- col_name:新列的名字
现在再来看 np.select 是需要把所有的条件给放一起,但现在 conditions 是每隔一个位置才是分支条件,利用 python 的切片功能就可以轻易分开:
- 行2,3:利用切片的最后一个参数 step ,让其每隔2个位置取出元素,配合开始位置,就可以取出所有的奇数位置或偶数位置的元素
最后,我们不希望修改了源数据,可以使用 pandas 提供的方法做到:
有没有觉得 janitor 很好用,评论区说说你的感受
记得关注、点赞、转发
猜你喜欢
- 2025-07-14 Python数据重塑与清洗常用命令(python数据分析数据清洗)
- 2025-07-14 python文本分析与挖掘(一)-构建语料库
- 2025-07-14 Python GUI编程利器:Tkinker中的列表框和静态框(5)
- 2025-07-14 Python办公自动化系列课程2:Excel大体联数据匹配只需12行代码
- 2025-07-14 Python数据可视化Dash开源库Bootstrap信息提示框Alert
- 2025-07-14 学习编程第177天 python编程 富文本框text控件的使用
- 07-14Python数据重塑与清洗常用命令(python数据分析数据清洗)
- 07-14python文本分析与挖掘(一)-构建语料库
- 07-14Python GUI编程利器:Tkinker中的列表框和静态框(5)
- 07-14Python办公自动化系列课程2:Excel大体联数据匹配只需12行代码
- 07-14Python数据可视化Dash开源库Bootstrap信息提示框Alert
- 07-14python 数据处理库中库,增强pandas功能的库有什么特别之处
- 07-14学习编程第177天 python编程 富文本框text控件的使用
- 07-14从逗号到省略号,Python 标点符号用法大揭秘!看完少踩 90% 的坑!
- 277℃Python短文,Python中的嵌套条件语句(六)
- 277℃python笔记:for循环嵌套。end=""的作用,图形打印
- 274℃PythonNet:实现Python与.Net代码相互调用!
- 269℃Python实现字符串小写转大写并写入文件
- 268℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 127℃原来2025是完美的平方年,一起探索六种平方的算吧
- 113℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 108℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 最近发表
-
- Python数据重塑与清洗常用命令(python数据分析数据清洗)
- python文本分析与挖掘(一)-构建语料库
- Python GUI编程利器:Tkinker中的列表框和静态框(5)
- Python办公自动化系列课程2:Excel大体联数据匹配只需12行代码
- Python数据可视化Dash开源库Bootstrap信息提示框Alert
- python 数据处理库中库,增强pandas功能的库有什么特别之处
- 学习编程第177天 python编程 富文本框text控件的使用
- 从逗号到省略号,Python 标点符号用法大揭秘!看完少踩 90% 的坑!
- 一篇文章带你弄懂Python基础之列表介绍和循环遍历
- Python NumPy 数组形状操作(python数组类型)
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)