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

Pandas .groupby()在apply无操作时会智能跳过分组处理吗?

Pandas groupby.apply的特殊行为解析

先准备测试数据:

import pandas as pd
test = pd.DataFrame([{'a': 1, 'b': 15}, {'a':1, 'b': 14}])

两种apply场景的差异

场景1:带数据过滤的apply

执行如下代码:

test.groupby('a').apply(lambda x: x.iloc[:-1])

返回结果符合预期,分组键a被设为索引:

a   b
a         
1  0  1  15

场景2:无操作的apply

但如果执行无操作的lambda:

test.groupby('a').apply(lambda x: x)

返回的却是原DataFrame,分组键并没有成为索引:

a   b
0  1  15
1  1  14

原因解析

这是Pandas内置的性能优化逻辑:当apply的返回值和分组后的子DataFrame完全一致(结构、索引、数据均未改动)时,Pandas会直接返回原DataFrame,跳过添加分组索引的步骤,避免做无意义的重复计算。

强制保留分组索引的方法

如果想要让无操作的apply也返回带分组索引的结果,可以对子DataFrame做一个不影响数据的微小修改,比如返回副本:

test.groupby('a').apply(lambda x: x.copy())

此时返回结果就会带上分组索引:

a   b
a         
1  0  1  15
   1  1  14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:05