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

Pandas分组后重采样,分组键何时会被保留?

Pandas groupby-resample 聚合函数差异原因解析

核心逻辑

这个差异的本质是不同聚合函数对非数值类型列的处理规则不同,结合你的场景具体拆解:


1. sum() 聚合的行为

sum() 是面向数值型数据的聚合函数,会自动忽略无法进行求和运算的非数值列(比如你的字符串列A),仅对数值列(此处为B)执行计算。

  • 在groupby('A').resample('H').sum()的执行流程中,分组后的A列是字符串类型,sum()无法对其进行求和操作,因此直接将该列排除在聚合结果之外,最终仅保留数值列B。

2. max() 聚合的行为

max() 支持对字符串类型执行聚合(基于字典序取最大值),在你的场景中:

  • 每个groupby('A')分组内的A列值完全一致(如a分组内全为'a'),对其执行max()会得到该分组的键值本身;
  • 因此max()会保留A列并输出其聚合结果,最终结果同时包含A和B两列。

额外验证示例

若将A列改为数值类型:

sdf = pd.DataFrame({'A': [1,1,2,2], 'B':[3,2,1,0], 'T': ts_col})
sdf.set_index('T').groupby('A').resample('H').sum()

此时sum()会保留A列(分组内A的和等于分组键值),进一步验证了sum()仅过滤非数值列的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:12:49