如何用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
相关产品推荐
相关产品推荐

