leetcode-584.寻找用户推荐人

 分析:

  1. 明确数据来源和结构
    • 数据来自 “Customer” 表,该表包含三列,分别是整数类型的 “id”(主键)、字符串类型的 “name”(客户姓名)以及整数类型的 “referee_id”(推荐人 id)。
  2. 确定查询目标
    • 需要筛选出没有被 “id = 2” 的客户推荐的客户,即 “referee_id” 不为 2 的客户。
  3. 思考查询方法
    • 使用WHERE子句来筛选满足条件的行。具体条件为 “referee_id <> 2” 或 “referee_id IS NULL”,因为如果推荐人 id 为空,也说明该客户没有被特定客户推荐。
    • 最后选择 “name” 列作为输出结果。

584. 寻找用户推荐人

表: Customer

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| referee_id  | int     |
+-------------+---------+
在 SQL 中,id 是该表的主键列。
该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。
LeetCode584 题中,目标是从用户数据中筛选出那些推荐人(`referee_id`)不是编号 2 的用户[^1]。这可以通过 Pandas 来实现,具体步骤包括读取数据、过滤符合条件的行,并输出指定的字段。 以下是一个基于 Pandas 的实现方法: ```python import pandas as pd def find_customers(customer: pd.DataFrame) -> pd.DataFrame: # 过滤掉 referee_id 等于 2 的记录 result = customer[customer['referee_id'] != 2] # 返回所需的字段 return result[['name', 'mail']] ``` ### 说明 - `customer[customer['referee_id'] != 2]`:这一行代码用于筛选出 `referee_id` 不等于 2 的行。 - `return result[['name', 'mail']]`:返回最终需要的字段 `name` 和 `mail`。 如果输入数据中包含 `referee_id` 为 `NaN`(空值)的情况,也可以选择保留这些记录,因为它们并不等于 2。Pandas 会自动处理这些情况。 ### 测试示例 假设输入的 `customer` DataFrame 如下所示: ```python data = { 'user_id': [1, 2, 3, 4], 'name': ['Winston', 'Jonathan', 'Annabelle', 'Sally'], 'mail': ['winston@leetcode.com', 'jonathan@leetcode.com', 'bella-@leetcode.com', 'sally.come@leetcode.com'], 'referee_id': [1, None, 3, 2] } customer = pd.DataFrame(data) ``` 运行上述函数后,预期输出结果如下: ``` name mail 0 Winston winston@leetcode.com 1 Jonathan jonathan@leetcode.com 2 Annabelle bella-@leetcode.com ``` ### 扩展功能 如果需要进一步筛选其他条件,例如 `referee_id` 为空的情况,可以扩展条件: ```python result = customer[(customer['referee_id'] != 2) | customer['referee_id'].isna()] ``` 这将包括 `referee_id` 不等于 2 或为空的记录。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值