3 回答
TA贡献1784条经验 获得超2个赞
这里有一个使用pandas.
假设这master是您使用 创建的主数据框pandas,您可以执行以下操作:
shuffled = master.sample(frac=1)
这会创建一个主数据框的副本,其中的行随机重新排序。请参阅stackoverflow 上的此答案或该方法的文档sample。
然后,您可以简单地按顺序构建 10 个较小的五行数据框。
subsets = []
for i in range(10):
subdf = shuffled.iloc[(i*5):(i+1)*5]
subsets.append(subdf)
subsets是包含您的小数据框的列表。做:
for sub in subsets:
print(sub)
将它们全部打印出来并通过肉眼验证没有重复。
TA贡献1802条经验 获得超4个赞
这似乎是一个组合问题。这是一个解决方案:你应该创建你的列表,比如 L。然后你决定子集的大小,比如 r。之后是代码:
from itertools import combinations
combinations(L,r)
但是,如果您不想决定要创建的集合的大小,则可以使用 random 模块,如下所示:
import random
from itertools import combinations
combinations(L,r = random(a,b))
在这种情况下,这将从列表 L 中创建一组随机的 r(a 和 b 之间的随机整数)元素。如果你想这样做 10 次,你可以做一个for
循环。
我希望这对你有用。
TA贡献1893条经验 获得超10个赞
假设我们有lines一个带有数据集迭代器的变量。然后:
from random import sample
# Chunk length
chunk_len = 2
# Number of chunks
num_of_chunks = 5
# Get the sample with data for all chunks. It guarantees us that there will
# be no repetitions
random_sample = sample(lines, num_of_chunks*chunk_len)
# Construct the list with chunks
result = [random_sample[i::num_of_chunks] for i in range(num_of_chunks)]
result
将返回:
[['123 QX20765B 1 1',
'118 GN31829N 1 1'],
['127 IT17216C 1 1',
'122 YW35494W 1 1'],
['138 LI89002Q 1 1',
'126 RG21661H 1 1'],
['120 VJ71307A 1 1',
'121 OX22563R 1 1'],
['143 OW40240P 1 1',
'142 XJ75065T 1 1']]
添加回答
举报