You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更简便地对DataFrame非时间列H下采样并聚合其他列?

Pandas下采样浮点列并对其他列求和的简便实现

需求:对DataFrame中浮点型列H按1.0间隔下采样,同时将其余事件计数器列(如A、B)的值累加求和。

示例数据

import pandas as pd
df = pd.DataFrame(
    data=[
        [1.0, 4, 2],
        [1.5, 3, 2],
        [2.0, 3, 3],
        [2.5, 2, 5]
    ],
    columns=['H', 'A', 'B']
)

原DataFrame输出:

H  A  B
0  1.0  4  2
1  1.5  3  2
2  2.0  3  3
3  2.5  2  5

期望结果

H  A  B
0  1.0  7  4
1  2.0  5  8

简便实现方式

方法1:分组时指定聚合列(推荐)

直接在groupby后指定需要求和的列,避免对H列执行求和操作,同时将分组键转为浮点型以匹配期望格式:

# 按H的整数部分分组,仅对A、B列求和
result = df.groupby((df['H'] // 1).astype(float))[['A', 'B']].sum().reset_index()
print(result)

输出结果完全符合需求,无需额外清理步骤。

方法2:使用agg自定义聚合规则

通过agg分别指定H列的取值规则(取分组的基准浮点值)和其他列的求和规则:

result = df.groupby(df['H'].apply(lambda x: int(x))).agg(
    H=('H', lambda x: float(int(x))),  # 将分组键转为浮点型
    A=('A', 'sum'),
    B=('B', 'sum')
).reset_index(drop=True)
print(result)

原方法的问题

原方法中groupby.sum()会对所有列(包括H)执行求和,导致H列出现冗余的累加值,需要额外删除列和重置索引。上述两种方法直接在分组聚合阶段就完成了格式和计算需求,一步到位。

内容的提问来源于stack exchange,提问作者Raf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:23:14