如何获取DataFrame GroupBy对象的列名?

时间:2016-09-02 09:58:38

标签: python pandas

如何获取GroupBy对象的列名?该对象不提供列属性。我可以先聚合对象或使用get_group()方法提取DataFrame,但如果有被删除的列(例如字符串),这可能是一个耗电的黑客或容易出错。

2 个答案:

答案 0 :(得分:5)

查看__getitem__的源代码,似乎可以使用

获取列名
g.obj.columns

其中g是groupby对象。显然g.obj链接到DataFrame。

答案 1 :(得分:0)

正如艾汉所说, g.obj.columns 确实返回列,但返回数据帧。 返回的组对象列 g.any().columns 不一样。

具体来说,g.any().columns 不包含用于创建 groupby 的列,而 g.obj.columns 包含。

因此,如果这种差异与您有关,则取决于结果的使用模型。就我而言,我可以不那么迂腐,但对于可分发的一段代码,您可能需要精确。

In [109]: ww.grp.any().columns
Out[109]: 
Index(['inode', 'size', 'drvid', 'path', 'hash', 'ftype', 'id', 'md5',
       'parent', 'top'],
      dtype='object')

In [110]: ww.grp.any().index.name
Out[110]: 'file'

In [111]: ww.grp.obj.columns
Out[111]: 
Index(['inode', 'size', 'drvid', 'path', 'hash', 'ftype', 'file', 'id', 'md5',
       'parent', 'top'],
      dtype='object')