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

时间:2018-03-23 22:15:06

标签: python pandas pandas-groupby

假设我有以下数据框:

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

即:

   Bar Foo
0    1   A
1    2   A
2    3   B
3    4   B

然后我创建了一个pandas.GroupBy对象:

g = df.groupby('Foo')

我如何从g获得g按最初名为Foo的列分组的事实?

如果我g.groups我得到:

{'A': Int64Index([0, 1], dtype='int64'),
 'B': Int64Index([2, 3], dtype='int64')}

告诉我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']

对于上下文,我正在尝试使用分组数据框进行一些绘图,并且我希望能够使用该组的名称以及组标签来标记每个构面(正在绘制单个组)。< / p>

有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

查询PS> (Get-Item C:\root\Public\mytextfile.txt).Target C:\root\Public\myothertextfile.txt 以获取所有石斑鱼的列表:

GroupBy.BaseGrouper.names

由此给出,

df.groupby('Foo').grouper.names