Python 重复提取大熊猫行组的有效方法

Python 重复提取大熊猫行组的有效方法,python,pandas,Python,Pandas,我有一个pandas数据框架,本质上如下所示: Group Date Value etc. 1 01/01 10 1 05/01 10 1 08/01 5 1 15/01 5 1 18/01 2 1 21/01 10 ... 2 02/01 3 2 15/01 4 2 25/01 1 ... 3 01/01 6 ....

我有一个pandas数据框架,本质上如下所示:

Group   Date    Value   etc.
1       01/01   10
1       05/01   10
1       08/01   5
1       15/01   5
1       18/01   2
1       21/01   10
...
2       02/01   3
2       15/01   4
2       25/01   1
...
3       01/01   6
....
我想将每个
提取到一个单独的数据帧中,该数据帧包含该组中的所有行(例如到一个带有键1、2、3等的字典中)。显而易见的方法是使用一个切片(比如
df[df.Group==1]
)在组中循环

但是,对于非常大的数据集(700k行,30k组),切片技术的速度非常慢,因为每个30k组都必须访问整个700k事务


有没有关于更快的方法的建议,其中700k行中的每一行只需访问一次即可执行分组?谢谢

我不知道为什么您希望每个组都有一个单独的df,我只需在“group”上使用
groupby
,然后使用该属性索引回原始df,或者使用:


您可以在
Group
列上使用
groupby
。这将获得所有组,您将能够使用以下功能处理每个组-

df.groupby('Group').<apply function here>
这将为您提供组1:

In [16]: grp.get_group(1)
Out[16]: 
   Group   Date  Value
0      1  01/01     10
1      1  05/01     10
2      1  08/01      5
3      1  15/01      5
4      1  18/01      2
5      1  21/01     10
8      1  21/01     10
9      1  15/01      5

这里的文档将进一步帮助您-

为什么需要在单独的数据集中使用它?我需要对每组行执行一系列操作,为此,我只需要该组中的行。否则,我会在整个集合上重复执行切片操作。非常优雅,我不知道
组。get_组(…)
太棒了,
get_组
正是我想要的!谢谢。非常感谢:-)我勾选了上面的答案,因为它是第一位的,但那正是我要找的。
In [13]: df
Out[13]: 
    Group   Date  Value
0       1  01/01     10
1       1  05/01     10
2       1  08/01      5
3       1  15/01      5
4       1  18/01      2
5       1  21/01     10
6       2  15/01      5
7       2  18/01      2
8       1  21/01     10
9       1  15/01      5
10      5  18/01      2
11      5  21/01     10

In [14]: df.groupby('Group').groups
Out[14]: {1: [0, 1, 2, 3, 4, 5, 8, 9], 2: [6, 7], 5: [10, 11]}

In [15]: grp = df.groupby('Group')
In [16]: grp.get_group(1)
Out[16]: 
   Group   Date  Value
0      1  01/01     10
1      1  05/01     10
2      1  08/01      5
3      1  15/01      5
4      1  18/01      2
5      1  21/01     10
8      1  21/01     10
9      1  15/01      5