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

如何从Pandas GroupBy对象中获取分组列的名称?

获取Pandas GroupBy对象的分组列名

刚好你问到点子上了——Pandas的GroupBy对象本身就有直接的属性可以获取分组列名,完全不用绕到first()的索引里去取,两种常用属性都能搞定:

1. 最简洁的方式:groupby_obj.keys

不管是单列分组还是多列分组,这个属性都会直接返回分组列名的列表:

单列分组示例

import pandas as pd
df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Bar=[1, 2, 3, 4]))
g = df.groupby('Foo')

print(g.keys)
# 输出:['Foo']

多列分组示例

df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Baz=['C', 'D', 'C', 'D'], Bar=[1, 2, 3, 4]))
g = df.groupby(['Foo', 'Baz'])

print(g.keys)
# 输出:['Foo', 'Baz']

2. 另一种方式:groupby_obj.grouper.names

grouper是GroupBy内部负责分组逻辑的对象,它的names属性同样能返回分组列名列表,结果和keys完全一致:

print(g.grouper.names)
# 输出:['Foo', 'Baz']

结合你的绘图需求

如果要给每个分面标注分组列名+标签,直接用这两个属性就能轻松实现,比如:

for group_label, group_df in g:
    # 把分组列名用逗号拼接,再加上分组标签
    plot_title = f"{', '.join(g.keys)}: {group_label}"
    group_df.plot(kind='line', y='Bar', title=plot_title)

这样就不用再依赖索引的name或names属性,直接从GroupBy对象本身获取核心信息,逻辑更清晰,也避免了多列分组时索引返回None的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:58:02