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

Python 如何从Pandas GroupBy对象获取分组列的名称?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,假设我有以下数据帧: df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Bar=[1, 2, 3, 4])) i、 e: 然后创建pandas.GroupBy对象: g = df.groupby('Foo') 如何从g中得到g是由一个最初命名为Foo的列分组的事实 如果我使用g.groups,我会得到: 这告诉我Foo列采用'A'和'B'的值,而不是原始列名 现在,我可以做如下事情: g.first().index.name 但似乎奇怪的是,

假设我有以下数据帧:

df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Bar=[1, 2, 3, 4]))
i、 e:

然后创建pandas.GroupBy对象:

g = df.groupby('Foo')
如何从g中得到g是由一个最初命名为Foo的列分组的事实

如果我使用g.groups,我会得到:

这告诉我Foo列采用'A'和'B'的值,而不是原始列名

现在,我可以做如下事情:

g.first().index.name
但似乎奇怪的是,其中没有一个带有组名的g属性,所以我觉得我肯定遗漏了什么。特别是,如果g由多个列分组,则上述操作不起作用:

df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Baz=['C', 'D', 'C', 'D'], Bar=[1, 2, 3, 4]))
g = df.groupby(['Foo', 'Baz'])
g.first().index.name # returns None, because it's a MultiIndex
g.first().index.names # returns ['Foo', 'Baz']
对于上下文,我尝试使用分组的数据帧进行一些打印,并且我希望能够使用该组的名称以及组标签标记正在打印单个组的每个方面

有更好的方法吗?

查询GroupBy.BaseGrouper.names以获取所有Grouper的列表:

df.groupby('Foo').grouper.names
这就给了,

['Foo']

美好的可惜它似乎完全没有记录:@bwk确实如此。任何地方都没有记录在案。它更像是groupby对象的元数据对象,因为它们拥有它,但从这个问题来看,我认为它有一些用处。
df.groupby('Foo').grouper.names
['Foo']