DC娱乐网

这次pandas真的要与sql干上了,你有的我得都有,遥遥领先就对了

前言sql 中的 过滤、分组、聚合、排序、表连接,在 pandas 中全都有对应方法。sql 高高手会说,case wh
前言

sql 中的 过滤、分组、聚合、排序、表连接,在 pandas 中全都有对应方法。

sql 高高手会说,case when 你没有了吧。

没有比 sql 更简洁的了,在干净数据面前,sql 是无人能敌。

以前pandas确实没有直接的 case when 方法,不过现在还真有!没错,这是 pandas 2.2 版本新增的功能。而且名字也是一绝,就叫 ”case_when“

其实 pandas 的一众大佬们也开了会,讨论了一段时间

大致的意思是,许多人都在问,pandas 中如何根据条件创建列。在我的 pandas 专栏里面也详细讲解两种最常用的方式。

比如 numpy 的 select 就可以做到:

不过写法上是错开来的

不过,我们可以自定义函数,打造自己喜欢的调用方式。我们放在最后再看能否与新版本官方的 case_when pk一下。

看看官方提供的玩法。

不明原因,没有智能提示

很类似前面的 np.select ,只不过把结构弄成一个元组列表,每个元组对应 (条件,值)。而默认值就要在一开始定义到列里面。

值得注意的是,索引要对齐,所以行1代码要与 data 的 index 对上。

这真的好用吗?现在我们通过自定义函数,改造 np.select 吧。

第一种是直接一个函数搞定:

函数第一个参数是默认值,之后的是一对对出现的条件和对应值。

实现代码很简单

不过,有人喜欢”带对象“,开口闭口都是"面向对象",也来一个对象版本吧:

看起来比官方的舒服啊,全程智能提示。实现代码也非常简单:

你觉得官方的实现好用吗,评论区告诉我。

不要忘记一键三连。你的点赞、收藏、关注,是我创作的动力。

转发、关注我,私信"pandas",获得本期源码和数据。