我想知道如何从组的单个实例访问分组变量,而不是从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')。有一种简单的方法可以做到这一点吗?
答案 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