使用Pandas筛选始终零销售额及近3日零销售额的卖家
Pandas筛选两类特定销售额的卖家列表
数据预处理
先合并多个结构一致的表格,再按卖家和日期排序,确保能准确识别最近的销售日期:
import pandas as pd # 合并所有目标表格(假设表格存储在列表dfs中) combined_df = pd.concat(dfs) # 转换日期格式并按卖家、日期升序排序 combined_df['Date'] = pd.to_datetime(combined_df['Date']) combined_df = combined_df.sort_values(by=['Seller', 'Date'])
1. 筛选所有日期销售额均为0的卖家
按卖家分组后,检查每组的销售额是否全部为0:
# 标记每个卖家的所有销售额是否都为0 all_zero_mask = combined_df.groupby('Seller')['sales'].transform(lambda x: (x == 0).all()) # 提取符合条件的唯一卖家列表 all_zero_sellers = combined_df[all_zero_mask]['Seller'].unique().tolist() print("所有日期销售额均为0的卖家:", all_zero_sellers)
2. 筛选最近3个日期销售额为0但此前有销售额的卖家
分两步筛选:先找出最近3个日期销售额全0的卖家,再从中过滤出历史存在非0销售额的卖家:
# 第一步:获取每个卖家最近3个日期的数据,筛选出这3天销售额全0的卖家 latest_3_groups = combined_df.groupby('Seller').tail(3) latest_zero_candidates = latest_3_groups.groupby('Seller').filter(lambda x: (x['sales'] == 0).all())['Seller'].unique().tolist() # 第二步:从候选卖家中,筛选出历史有非0销售额的卖家 has_non_zero_candidates = combined_df.groupby('Seller').filter(lambda x: (x['sales'] > 0).any())['Seller'].unique().tolist() # 取交集得到最终符合条件的卖家 second_category_sellers = [seller for seller in latest_zero_candidates if seller in has_non_zero_candidates] print("最近3个日期销售额为0但此前有销售额的卖家:", second_category_sellers)
内容的提问来源于stack exchange,提问作者harry
相关产品推荐
相关产品推荐

