有没有一种简单的方法可以手动遍历现有的 pandas groupby 对象?
Is there a simple way to manually iterate through existing pandas groupby objects?
有没有简单的方法手动遍历现有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:
循环后跟。对于手动测试,我想在 for 循环中执行类似 group = grouped[0]
和 运行 的代码。不幸的是,这不起作用。我能找到的最好的东西 () 是
group = df[grouped.ngroup()==0]
它依赖于原始的 DataFrame 而不是 groupby-Object,因此不是最佳的 imo。
任何可迭代对象(这里是 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/
有没有简单的方法手动遍历现有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:
循环后跟。对于手动测试,我想在 for 循环中执行类似 group = grouped[0]
和 运行 的代码。不幸的是,这不起作用。我能找到的最好的东西 (
group = df[grouped.ngroup()==0]
它依赖于原始的 DataFrame 而不是 groupby-Object,因此不是最佳的 imo。
任何可迭代对象(这里是 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/