1

有没有一种简单的方法来手动迭代现有 pandas groupby对象?

import pandas as pd

df = pd.DataFrame({'x': [0, 1, 2, 3, 4], 'category': ['A', 'A', 'B', 'B', 'B']})
grouped = df.groupby('category')

在应用程序中,for name, group in grouped:循环如下。对于手动测试,我想做类似的事情group = grouped[0]并在 for 循环中运行代码。不幸的是,这不起作用。我能找到的最好的东西(这里)是

group = df[grouped.ngroup()==0]

它依赖于原始 DataFrame 而不是 groupby-Object 上的唯一,因此不是最佳 imo。

4

1 回答 1

2

任何可迭代对象(这里是 GroupBy 对象)都可以变成迭代器:

group_iter = iter(grouped)

下面的行将等效于选择第一组(由 索引0):

name, group = next(group_iter)

要获得下一组,只需重复:

name, group = next(group_iter)

等等...


来源:https ://treyhunner.com/2018/02/python-range-is-not-an-iterator/

于 2019-07-31T08:45:40.540 回答