如何用Pandas筛选低于自身事件平均处理量的记录
按Event分组筛选数值小于组平均值的记录
实现步骤
- 为每条记录匹配其所属
event_name的number_of_items_processed平均值 - 基于平均值筛选符合条件的行,保留指定列
代码实现
假设你的数据存储在名为df的Pandas DataFrame中:
import pandas as pd # 示例数据(替换为你的实际数据) df = pd.DataFrame({ "event_name": ["A", "A", "A", "B", "B", "B"], "date": ["2023-01-01", "2023-01-02", "2023-01-03", "2023-01-01", "2023-01-02", "2023-01-03"], "number_of_items_processed": [10, 20, 30, 5, 15, 25] }) # 计算每个event_name的平均值,添加为新列 df["group_avg"] = df.groupby("event_name")["number_of_items_processed"].transform("mean") # 筛选数值小于组平均值的记录,保留目标列 result = df[df["number_of_items_processed"] < df["group_avg"]][["event_name", "date", "number_of_items_processed"]] # 查看结果 print(result)
示例输出
event_name date number_of_items_processed 0 A 2023-01-01 10 3 B 2023-01-01 5
关键说明
transform("mean"):和groupby配合使用时,会将分组计算的平均值映射回原DataFrame的每一行,避免手动合并数据的麻烦。- 最后通过列索引
[["event_name", "date", "number_of_items_processed"]]直接提取需要的字段,无需额外处理。
内容的提问来源于stack exchange,提问作者Vithal Rd
相关产品推荐
相关产品推荐

