从CSV中随机选择行并重复X次

2024-03-28 16:32:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python新手,创建了一个脚本,可以从带有两列的csv中选择随机行。但它只从每列中随机抽取一行。这是我的代码:

import csv
import random

with open('Sheettwo.csv', 'r') as csv_file:
    csv_reader = csv.reader(csv_file)

    chosen_row = random.choice(list(csv_reader))

    paraone = (chosen_row[1])
    paratwo = (chosen_row[2])

    print(f'{paraone}\n{paratwo}\n')

我需要重复X次,以便(例如)随机选择4个值(每列两个)。我该怎么做


Tags: csv代码import脚本withrandomopenreader
2条回答
  • 你需要保留你的list(csv_reader),因为csv.reader是一个懒惰的迭代器,所以在它完成整个过程一次之后。。。完成了
  • 如果重复很好,只需在循环中调用random.choice
  • 否则使用random.choices(lines, k=n),其中k是要选择的行数

更好的方法是首先将数据存储在列表中,然后从中选择值

import csv
import random

with open('Sheettwo.csv', 'r') as csv_file:

    lines = [tuple(line) for line in csv.reader(csv_file)]


n = 4 #  number of row you want to pick elements from

chosen_rows = random.choices(lines, k=n) 
 # pick n rows in the list

chosen_values = [random.choice(row) for row in chosen_rows]
  # pick a value from each row

print('\n'.join(chosen_values))

我希望它会有用

相关问题 更多 >