如何用pandas按1500条记录分组计算各AU列的mean/sem/std统计值
实现方案
完全可以通过pandas自带的分组、聚合能力实现该需求,无需额外依赖,具体实现代码如下:
# 1. 筛选所有需要计算统计值的AU列 au_columns = [col for col in df_AU_r_2.columns if col.startswith("AU")] # 2. 生成每个Segment内部的子分组编号:每1500条为一个子组 # groupby('Segment').cumcount()会对每个Segment内的行从0开始按顺序编号 # 整除1500后,编号相同的行即为同一个子组 df_AU_r_2["subgroup_id"] = df_AU_r_2.groupby("Segment").cumcount() // 1500 # 3. 按Segment+子分组编号双维度分组,聚合计算均值、标准误、标准差 au_stats = df_AU_r_2.groupby(["Segment", "subgroup_id"])[au_columns].agg(["mean", "sem", "std"]) # 可选:将多层级的列名扁平化为单层级,格式为「AU列名_统计指标」 au_stats.columns = [f"{col}_{metric}" for col, metric in au_stats.columns]
逻辑说明
- 每个Segment内部的行编号从0开始,每1500条的整除结果相同,刚好实现每1500条一个分组的需求,最后不足1500条的尾部数据会自动划为独立子组,无需额外适配你给出的Segment边界
- 聚合结果默认以
Segment和subgroup_id为双层索引,可以直接通过reset_index()转为普通列方便后续使用
内容的提问来源于stack exchange,提问作者zbeedatm
相关产品推荐
相关产品推荐

