假设我有以下数据框:
df = pd.DataFrame(dict(Foo=['A', 'A', 'B', 'B'], Bar=[1, 2, 3, 4]))
i.e.:
Bar Foo
0 1 A
1 2 A
2 3 B
3 4 B
然后我创建一个 pandas.GroupBy 对象:
g = df.groupby('Foo')
我怎样才能得到,从g
,事实是g
按最初名为的列分组Foo
?
If I do g.groups
I get:
{'A': Int64Index([0, 1], dtype='int64'),
'B': Int64Index([2, 3], dtype='int64')}
这告诉我values认为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']
对于上下文,我试图使用分组数据框进行一些绘图,并且我希望能够使用该组的名称以及组标签来标记每个方面(正在绘制单个组)。
有没有更好的办法?