如何从数据集中随机选择n个块

时间:2019-06-27 06:01:35

标签: python pandas random

我有100个样本块,每个样本块有100个元素。一块中的元素相隔5秒;但是,来自不同块的元素之间的时间差至少为5小时(不是固定时间)。我的主要目标是从数据集中随机抽取10个块。

我的数据集:

index     time                  value   
i       12-1-2019 05:22:43       12         }  Chunk 1
i+1     12-1-2019 05:22:48       13
i+2     12-1-2019 05:22:53       14
..
i+99  ...............................

i+x      12-1-2019 13:32:12      31         }  Chunk 2
i+x+1    12-1-2019 13:32:17      77
i+x+2    12-1-2019 13:32:22      16
..
i+x+99  ...............................

i+x      14-1-2019 23:45:43      14         }  Chunk 3
i+x+1    14-1-2019 23:45:48      57
i+x+2    14-1-2019 23:45:53      46
..
i+x+99  ...............................

注意:这些块是有序的(即:块1发生在块2之前,块2发生在块3之前,依此类推)。

我想随机挑选100个中的10个。但是,大块中元素的顺序很重要,不能混洗。

1 个答案:

答案 0 :(得分:1)

如果我对,您的第一个块从索引0到索引99,第二个块从索引99到索引199,依此类推。

如果是正确的话,您只需从0到99之间的10个唯一随机数和iloc中的数据集中的相应行即可。

假设您的数据在pandas DataFrame中:

[dataset.iloc[index*100:index*100 + 100] for index in random.sample(range(0,100),10)]

我没有测试代码,因为我没有您的数据,但是上面的代码行应该为您提供10个长度为100的块的列表。

如果需要按照原始数据帧中的顺序对列表中的块进行排序,则可以对随机数进行排序:

[dataset.iloc[index*100:index*100 + 100] for index in sorted(random.sample(range(0,100),10))]