You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas获取指定客户消费的所有不重复food_id

实现客户消费食品ID查询功能(含重复记录警告)

核心实现代码

假设给定的Pandas DataFrame名为df,以下是完善后的功能函数:

import pandas as pd
import warnings

def get_unique_food_ids(customer_id):
    # 筛选目标客户的全部消费记录
    customer_data = df[df["customer_id"] == customer_id]
    
    # 处理无消费记录的情况
    if customer_data.empty:
        warnings.warn(f"客户ID {customer_id} 未查询到任何消费记录")
        return []
    
    # 统计每个food_id的消费次数,检测重复记录
    food_count = customer_data["food_id"].value_counts()
    duplicate_foods = food_count[food_count > 1].index.tolist()
    
    # 存在重复则抛出警告
    if duplicate_foods:
        warnings.warn(f"客户ID {customer_id} 存在重复消费记录:{', '.join(duplicate_foods)}")
    
    # 返回去重后的food_id列表
    return customer_data["food_id"].unique().tolist()

关键逻辑说明

  • 精准数据筛选:通过布尔索引快速定位目标客户的所有消费记录,先判断数据集是否为空,避免后续统计操作报错。
  • 重复记录检测:利用value_counts()高效统计每个食品ID的出现次数,筛选出消费次数>1的ID,通过Python标准库的warnings模块抛出警告(相比print,警告可以被代码捕获或配置忽略,更符合工程规范)。
  • 去重结果返回:使用unique()方法获取不重复的食品ID,转换为列表返回,适配大多数业务场景的使用需求。

调用示例

# 查询客户C15的消费食品ID
food_ids = get_unique_food_ids("C15")
print(food_ids)

当客户存在重复消费记录时,控制台会输出类似如下警告:

UserWarning: 客户ID C15 存在重复消费记录:F03, F07

内容的提问来源于stack exchange,提问作者Devein Clara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:20:22