每日一题15:Pandas:布尔索引之可回收且低脂的产品

一、每日一题 

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| product_id  | int     |
| low_fats    | enum    |
| recyclable  | enum    |
+-------------+---------+
product_id 是该表的主键(具有唯一值的列)。
low_fats 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品是低脂产品,'N' 表示不是低脂产品。
recyclable 是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品可回收,而 'N' 表示不可回收。

数据集如下:

data = [
['0', 'Y', 'N'],
 ['1', 'Y', 'Y'], 
['2', 'N', 'Y'], 
['3', 'Y', 'Y'],
 ['4', 'N', 'N']]
products = pd.DataFrame(data,
 columns=['product_id', 'low_fats', 'recyclable'])
.astype({'product_id':'int64', 'low_fats':'category', 'recyclable':'category'})
示例:
输入:
Products 表:
+-------------+----------+------------+
| product_id  | low_fats | recyclable |
+-------------+----------+------------+
| 0           | Y        | N          |
| 1           | Y        | Y          |
| 2           | N        | Y          |
| 3           | Y        | Y          |
| 4           | N        | N          |
+-------------+----------+------------+
输出:
+-------------+
| product_id  |
+-------------+
| 1           |
| 3           |
+-------------+

解答:

import pandas as pd

def find_products(products: pd.DataFrame) -> pd.DataFrame:
    is_low_fats = products['low_fats'] == 'Y'
    is_recyclable = products['recyclable'] == 'Y'
    is_product_id = is_low_fats & is_recyclable
    result = products[is_product_id]
    return result[['product_id']]

题源:Leetcode 

二、总结

本题考察布尔索引的运用。

布尔索引步骤

构建条件表达式:首先,你需要创建一个或多个表达式来表示你的筛选条件。对于数值类型的列,你可以直接比较大小;对于类别或其他类型的数据,可能需要使用.isin()等方法来匹配值。

应用条件:将这些条件应用到DataFrame上,这会返回一个布尔值的Series,其中True表示该行满足条件,False则不满足。

用作索引:最后,你可以直接把这个布尔Series用作DataFrame的索引来选取数据。

2024.5.18

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值