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

使用df.groupby(column).apply()时如何在apply上下文中获取分组列?

解决方案

你可以搭配pandas内置的pipe方法实现一行获取分组列名,不需要硬编码传参,也不需要额外定义中间变量,无需拆分链式调用结构。

核心实现逻辑

pipe方法可以将当前链式调用中的GroupBy对象作为参数传入lambda,你可以通过GroupBy对象的grouper.names属性直接拿到所有分组列的名称列表,完全符合链式调用的要求。

完整可运行示例

import pandas as pd

# 构造测试数据
df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
                              'Parrot', 'Parrot'],
                   'Max Speed': [380., 370., 24., 26.]})

# 一行链式调用实现,无需硬编码分组列名
result = df.groupby(['Animal']).pipe(
    lambda grouped: grouped.apply(
        lambda sub_df: f"分组列名称:{grouped.grouper.names[0]},当前分组值:{sub_df.name}"
    )
)

print(result)

运行输出示例

Animal
Falcon    分组列名称:Animal,当前分组值:Falcon
Parrot    分组列名称:Animal,当前分组值:Parrot
dtype: object

补充说明

  • 如果是多列分组,grouped.grouper.names会返回包含所有分组列名的列表,直接按需取用即可
  • sub_df.name是pandas GroupBy.apply传入的子DataFrame自带的属性,存储当前分组的取值,不需要额外从子DF中取数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:18:02