如何筛选仅由单一seller配送的order_id对应的DataFrame行
实现方法
可以用pandas的分组+筛选快速实现,核心思路是先找出所有卖家唯一的订单ID,再用这些ID提取原数据中对应的行。
方法一:分组筛选ID后匹配
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'order_id': [1,1,2,2,2,3,4,4,5], 'product': ['apple','grape','orange','strawberry','apple','apple','kiwi','orange','grape'], 'seller': ['a','a','a','b','b','b','a','a','c'] }) # 1. 筛选出所有卖家唯一的订单ID valid_order_mask = df.groupby('order_id')['seller'].nunique() == 1 valid_order_ids = valid_order_mask[valid_order_mask].index # 2. 提取原数据中符合条件的行 result = df[df['order_id'].isin(valid_order_ids)] print(result)
方法二:用transform简化代码(更简洁)
# 直接通过transform将分组计算结果广播到每行,再筛选 result = df[df.groupby('order_id')['seller'].transform('nunique') == 1] print(result)
两种方法都能得到目标输出,方法二更精简——transform会把分组统计的卖家唯一数映射到该订单的每一行,直接通过条件判断就能筛选出符合要求的所有行。
内容的提问来源于stack exchange,提问作者teogj
相关产品推荐
相关产品推荐

