利用np.select对excel 每一行数据的某几列(多列)进行条件筛选并生成新一列数据的方法

还是最近的那个项目,最后收尾阶段遇到这样一个问题:
根据表格每一行某几列的数据进行条件筛选后并生成新的一列数据。

像下面这个示例一样👇:
在这里插入图片描述

需要根据每一行的“ 生日”,“地址”,“保险”是否有值来生成新的一列字段,比如叫“完整度”字段

就拿王佳来说,因为他的 “保险”字段是空值,但是“地址”和“生日”有对应的值。那么最后新字段 “完整度”这里就要填入 “比较完整” 四个字。同理,李明的“完整度” 就应该是“很完整”;胡曦就是“不完整”;最后章杰就是“很完整”。

看起来是个比较简单的多列条件筛选问题,熟悉pandas的朋友肯定会说 “直接写一个IF-ELSE的 筛选函数后再在该DataFrame里面用apply应用即可解决。” 貌似是这么回事,掌柜一开始也是这么想的,但是写了后实际运行出现了如下报错:
在这里插入图片描述
回看上面的数据发现有两行存在 NaN值的情况,所以出现了如上报错。。。

于是再次借助强大的搜索引擎谷歌后发现了 用np.select方法解决更高效:
在这里插入图片描述
于是修改代码如下:
在这里插入图片描述
运行后就得到新的一列“完整度”的值:

在这里插入图片描述
是不是很方便就解决了多列条件筛选后生成新一列值的问题。

PS: 延伸一下,如果你只想对一列数据进行条件筛选,照样生成新的一列值该怎么处理呢?

还是上面那组数据,比如掌柜这里只根据“保险”这一列是否有“Y”来判断新的一列值,叫“重要性”。有“Y”值就填入“重要”;否则就是“不重要”。
直接上代码:
在这里插入图片描述
这里只需要把 np.select()换成 np.where()即可解决!!!还是很方便。

😁希望今天分享的对你后面操作有帮助。

参考资料:
Error: float object has no attribute notnull
Numpy 官方文档
Pandas conditional creation of a series/dataframe column

  • 3
    点赞
  • 11
    收藏 更改收藏夹
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白掌柜

一毛也是爱~谢谢大家的鼓励!

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值