从groupby()生成的组实例访问分组变量

时间:2016-07-05 19:47:48

标签: pandas group-by

我想知道如何从组的单个实例访问分组变量,而不是从GroupBy对象本身访问。

文档使用此示例来说明如何迭代地从GroupBy对象获取分组变量和组:

In [43]: for name, group in df.groupby(['A', 'B']):
....:        print(name)
....:        print(group)
....: 
('bar', 'one')
    A    B         C         D
1  bar  one -0.042379 -0.089329

但是,我使用apply()和自定义函数来计算每个组的一些统计信息。然后,分割,计算和重组到数据帧的调用是:

df.groupby(['A','B']).apply(myfunc).reset_index()

myfunc有签名:

def myfunc(g): #do some stuff with the group(=g), a DataFrame object

我希望能够获得标识该组g的列A和B的值(例如'bar','one')。有一种简单的方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我认为你可以使用.name

df = pd.DataFrame({'A':['bar','bar','bar','foo','foo','foo'],
                   'B':['one','one','one','one','one','one'],
                   'C':[7,8,9,3,4,6]})

print (df)

def myfunc(x):
    print (x.name)
    if (x.name == ('bar', 'one')):
        x.C +=10
    return x

print (df.groupby(['A','B']).apply(myfunc).reset_index())
   index    A    B   C
0      0  bar  one  17
1      1  bar  one  18
2      2  bar  one  19
3      3  foo  one   3
4      4  foo  one   4
5      5  foo  one   6