Произвольно выберите строки из CSV и повторите X раз - PullRequest
1 голос
/ 21 февраля 2020

Я новичок в 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 значения были выбраны случайным образом (по два из каждого столбца). Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Лучший способ сделать это - сначала сохранить данные в списке, а затем выбрать из него значения.

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))

Надеюсь, это будет полезно ...

2 голосов
/ 21 февраля 2020
  • Вы должны держать свой list(csv_reader) рядом, потому что csv.reader - это ленивый итератор, так что после того, как он прошел весь процесс один раз ... все готово
  • Если с повторениями все в порядке, просто позвоните random.choice в al oop
  • В противном случае используйте random.choices(lines, k=n), где k - количество строк, которые вы хотите выбрать
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...