【发布时间】:2015-04-15 05:43:58
【问题描述】:
我想遍历按字符串或日期分组的组。
df = pd.DataFrame({'A': ['foo', 'bar'] * 3,
'B': ['me', 'you', 'me'] * 2,
'C': [5, 2, 3, 4, 6, 9]})
groups = df.groupby('A')
例如,在这段代码中,我按名称“foo”和“bar”分组,我可以使用;
for name, group in groups:
print name
我的问题是我需要在这个循环中运行另一个循环,并且每次我需要调用不同的组。 like(假设组的大小为 n)
for name,group in groups:
for name1 in range(name, name + 9): # + 9 to get first 9 groups for every iteration`
因为 name 是一个字符串,所以我无法做到这一点。 简而言之,我只想要一种方法,通过该方法我可以按数字访问组,以便我可以轻松调用所需的组进行计算。 类似的东西
groups = df.group('A')
for i in range(0,n):
print group(i)[] + group(i+1)[]
所以如果我有以下组 [g1,g2,g3,g4,g5],我想像 [g1,g2]、[g2,g3]、[g3,g4] 这样成对迭代地调用它们... . 并且每次取2组系列的交集。我正在寻找通过索引或某些编号调用组 [g1,g2,..g5] 的方法。这样我就可以将它们用于循环操作。目前我知道调用组的唯一方法是通过组的名称,如上面示例“foo”和“bar”中所述。 我希望有能力执行以下操作:
for name,group in groups-1:
print gb.get_group(name)
print gb.get_group(name+1)
我知道这可能是一个简单的问题,但我一直在为这部分苦苦挣扎。我将不胜感激任何帮助。
【问题讨论】:
-
你到底想做什么?目前这听起来像是XY problem...
-
不清楚你需要什么——一次让任何 9 个组工作就足够了,还是对这些组有一些排序?如果组是有序的,是因为它们的键是有序的吗?
-
所以如果我有以下组 [g1,g2,g3,g4,g5],我想像 [g1,g2], [g2,g3], [g3, g4] ....每次取2组系列的交集。我正在寻找通过索引或某些编号调用组 [g1,g2,..g5] 的方法。这样我就可以将它们用于循环操作。目前我知道调用组的唯一方法是通过组的名称,如上面示例“foo”和“bar”中所述。
-
请取一些数据(即使是随机的也足够了),并给出预期的输出,这样会更容易理解。
标签: python pandas iterator dataframe grouping