【发布时间】:2020-09-19 17:34:28
【问题描述】:
我有一个数据框,我想按grp1, grp2 列分组,然后根据how_many 列从每个组中随机抽样。
这是我的示例数据
grp1 grp2 how_many val
0 a 1 2 2993
1 a 1 2 8244
2 a 2 1 7148
3 a 1 2 5326
4 a 3 2 5577
5 a 3 2 5651
6 a 1 2 6297
7 a 2 1 2657
8 a 2 1 9774
9 a 1 2 4075
10 a 3 2 6780
11 b 1 1 1765
12 b 1 1 5592
13 b 1 1 9936
14 b 2 4 4324
15 b 2 4 6823
16 b 2 4 9184
17 b 2 4 7498
18 b 2 4 3810
这是预期的结果(当然是随机的):
grp1 grp2 how_many val
0 a 1 2 2993
1 a 1 2 5326
2 a 2 1 9774
3 a 3 2 6780
4 a 3 2 5651
5 b 1 1 5592
6 b 2 4 6823
7 b 2 4 9184
8 b 2 4 7498
9 b 2 4 3810
我的方法是遵循these instructions,但是,就我而言,我没有稳定的样本量,它会根据列值而变化。
我还尝试在 groupby 列上使用 multi_index,但收到错误消息,提示 MemoryError: Unable to allocate 107. GiB for an array with shape (57244869081,) and data type int16。这只是我数据的一小部分。
任何帮助将不胜感激
【问题讨论】:
-
不,不是。那里的样本量是标准的,准确地说是 8000。就我而言,它基于列值
标签: python pandas pandas-groupby