pandas每天一题-题目12:复杂筛选
这是一个关于 pandas 从基础到进阶的练习题系列 , 来源于 github 上的 guipsamora/pandas_exercises。 这个项目从基础到进阶 , 可以检验你有多么了解 pandas 。
我会挑选一些题目 , 并且提供比原题库更多的解决方法以及更详尽的解析 。
计划每天更新一期 , 希望各位小伙伴先自行思考 , 再查看答案 。 如果对你有帮助 , 记得转发推荐给你的好友!
上期文章:pandas每天一题-题目11:筛选数据也有3种方式 , 最后一种揭示本质
【pandas每天一题-题目12:复杂筛选】如下数据:
本文插图
数据描述:
- 此数据是订单明细表 。 一个订单会包含很多明细项 , 表中每个样本(每一行)表示一个明细项
- order_id 列存在重复
- item_name 是明细项物品名称
- quantity 是明细项数量
- item_price 是该明细项的总价钱
- choice_description 是每一项更详尽的描述
第一行的 choice_description 是 "Diet Coke"(可乐), 第二行是 "Sprite"(雪碧)
需求:
- 找出包含 Canned Soda 的订单(item_name有 Canned Soda 的 order_id)
- 找出 Canned Soda 数量大于1的订单
- 找出同一个订单中多次出现 Canned Soda 的订单
需求1找出包含 Canned Soda 的订单(item_name有 Canned Soda 的 order_id) 。
初学者容易写出以下错误代码:
df.query('item_name == "Canned Soda"')
本文插图
你能确保一个订单中只出现一次 "Canned Soda" ?
验证一下:
(df.query('item_name == "Canned Soda"')['order_id'].value_counts)
本文插图
- 有些订单会同时出现多次 "Canned Soda"
- 逻辑很简单 , 第一次点餐的饮料喝完了 , 还想再喝 , "再来一瓶"呗
(df.query('item_name == "Canned Soda"')['order_id'].drop_duplicates)
本文插图
去重是之前章节的内容 , 不再讲解
需求2找出 Canned Soda 数量大于1的订单
其实只是在需求1的基础上添加数据条件即可:
(df.query("item_name == 'Canned Soda' and quantity>1")['order_id'].drop_duplicates)
- |每小时收费500元?“女陪玩”出现天价,“灰色生意”该叫停了
- 霍金|霍金留下三个预言,每一个都事关人类安危,第一个已经开始应验
- 旅行者|你永远不要碰这五种东西,每一种都是通向地狱的门票
- 飞行器|老外打造奇葩电动“飞碟”!乘客只能趴着,每小时飞257公里
- 火星|被嘲笑整整10年,中国航天一举突破纪录,西方国家瞬间一片震动
- car-t|破纪录!自转速度最快的白矮星,每25秒旋转一次
- 月球|北极传来“坏消息”!每年大量黑碳涌向北极,科学家对此紧张不已
- USB|《镜报》调查:女生每周自拍5个小时,vivo自拍手机为此而来?
- 艾滋病|英国正式批准艾滋注射疗法,每2个月给药一次 , 会带来什么影响
- cps|副业:人人都可以做的项目,每月可以多入5000+