Pandas用groupby实现每n行分组,St求和其余列求均值的方案
实现方案
你可以通过groupby结合agg聚合方法,一次性为不同列指定不同的合并规则,完整实现代码如下:
import pandas as pd # 设置每N行合并为1行 N = 5 # 构造分组规则:索引整除N后相同值的行归为同一组 # 动态生成聚合规则:所有列默认取平均值,仅St列取总和 agg_config = {col: 'mean' for col in df.columns} agg_config['St'] = 'sum' # 执行分组聚合,重置索引得到最终结果 res_df = df.groupby(df.index // N).agg(agg_config).reset_index(drop=True)
补充说明
如果你的列数较少,也可以手动指定聚合规则,写法更直观:
res_df = df.groupby(df.index // N).agg({ 'Temp (C)': 'mean', 'Rel Hum (%)': 'mean', 'Wind Spd (km/h)': 'mean', 'St': 'sum' }).reset_index(drop=True)
- 末尾的
reset_index(drop=True)是为了将分组生成的索引重置为从0开始的连续整数,和你给出的预期输出格式完全匹配。 - 上述代码用你的示例数据运行后,输出结果和你贴的预期结果一致。
内容的提问来源于stack exchange,提问作者RajatRaja
相关产品推荐
相关产品推荐

