Python 熊猫:如何在应用程序中同时使用groupby对象的名称和数据帧

Python 熊猫:如何在应用程序中同时使用groupby对象的名称和数据帧,python,pandas,Python,Pandas,我有一个pandas groupby对象,它是通过 g = df.groupby(`id`) 在具有列id的数据帧df上 现在我还有一个函数func,它将id,group作为输入。我想将func应用于groupby对象中的每个id、group。目前我使用一个循环: for id, group in g: func(id, group) 是否有更好(更快)的方法使用apply或类似工具执行此操作?您可以在groupby对象上使用apply将函数应用于每个组。由于函数需要接受组作为其参数

我有一个pandas groupby对象,它是通过

g = df.groupby(`id`)
在具有列
id
的数据帧
df

现在我还有一个函数
func
,它将
id,group
作为输入。我想将
func
应用于groupby对象中的每个
id、group
。目前我使用一个循环:

for id, group in g:
    func(id, group)

是否有更好(更快)的方法使用apply或类似工具执行此操作?

您可以在groupby对象上使用
apply
将函数应用于每个组。由于函数需要接受组作为其参数,因此可以使用以下选项:

g.apply(lambda grp: f(grp.id.iloc[0], grp))

谢谢,工作正常(在删除
[0]
之后)。我很惊讶地看到,它使代码的运行时间增加了一倍。退一步,在预先分组的数据帧中有多少行,有多少组?我发现,一般来说,很多光滑的
pandas
特性都有较高的构建开销,但最终比循环快得多。因此,如果你有一小部分的小组,循环他们,然后重新组合结果可能是有意义的。但是,如果你有数百个组,我希望
pandas
方法更具竞争力。DJ_8one6-有450000行,19000个组。我本以为它足够大,可以越过头顶。