numpy.random.permutation函数可以获取一个指定大小的随机排列序列。
将这个随机排列序列作为数值索引传入Series或DataFrame,则可以实现随机重排序的操作。
首先,产生一个表示新顺序的整数数组:
In [100]: df = pd.DataFrame(np.arange(5 * 4).reshape((5, 4)))In [101]: sampler = np.random.permutation(5)In [102]: samplerOut[102]: array([3, 1, 4, 2, 0])
然后基于iloc的索引操作或take函数中使用该数组了:
In [103]: dfOut[103]:0 1 2 30 0 1 2 31 4 5 6 72 8 9 10 113 12 13 14 154 16 17 18 19In [104]: df.take(sampler)Out[104]:0 1 2 33 12 13 14 151 4 5 6 74 16 17 18 192 8 9 10 110 0 1 2 3df.iloc[sampler]0 1 2 33 12 13 14 151 4 5 6 74 16 17 18 192 8 9 10 110 0 1 2 3
sample方法在默认情况下可以不重复的选取指定数值的列:
In [105]: df.sample(n=3)Out[105]:0 1 2 33 12 13 14 154 16 17 18 192 8 9 10 11
传递replace=True到sample,则允许重复选择:
In [106]: choices = pd.Series([5, 7, -1, 6, 4])In [107]: draws = choices.sample(n=10, replace=True)In [108]: drawsOut[108]:4 41 74 42 -10 53 61 74 40 54 4dtype: int64
文章转载自漫谈大数据与数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




