Рандомный выбор данных из нескольких столбцов .csv
Мне необходимо прочитать csv файл и выбрать рандомно из каждого перечисленного столбца с индексом 1,2,3 и т.д. значение.
Шел по такому пути:
import random
import csv
with open(file_csv) as f:
reader=csv.reader(f)
data_category=[row_c[1] for row_c in reader]
data_prize=[row_p[2] for row_p in reader]
category=random.choice(data_category)
prize=random.choice(data_prize)
Но конечно получаю ошибку Cannot choose from an empty sequence
Для одного столбца работает и я получаю случайное значение
import random
import csv
with open(file_csv) as f:
reader=csv.reader(f)
data_category=[row[1] for row in reader]
category=random.choice(data_category)
Не понимаю, как сделать выборку для нескольких столбцов...
Прихожу к такому варианту
import random
import csv
with open(file_csv) as f:
incl_col = [1, 2, 3]
reader=csv.reader(f, delimiter=",")
data_category=[row[1] for row in reader]
for row in reader:
col = list(row[i] for i in incl_col)
category=random.choice(incl_col)
Но не понимаю, как в переменную присвоить значение рандомного выбора для каждой колонки...
Помогите, пожалуйста, советом Спасибо
Ответы (2 шт):
Если нужно просто сохранить выбранные значения, то создайте какую-нибудь коллекцию, например, переменную со списком для накопления значений:
import random
import csv
selected_categories = []
with open(file_csv) as f:
incl_col = [1, 2, 3]
reader=csv.reader(f, delimiter=",")
data_category=[row[1] for row in reader]
for row in reader:
col = list(row[i] for i in incl_col)
category = random.choice(incl_col)
selected_categories.append(category)
print('Selected categories:', selected_categories)
Используйте для этого pandas
import pandas as pd
df = pd.read_csv("sss.csv") # примерный csv
Получаем таблицу:
John Doe 120 jefferson st. Riverside NJ 08075
0 Jack McGinnis 220 hobo Av. Phila PA 9119
1 John "Da Man" Repici 120 Jefferson St. Riverside NJ 8075
2 Stephen Tyler 7452 Terrace "At the Plaza" road SomeTown SD 91234
3 NaN Blankman NaN SomeTown SD 298
4 Joan "the bone", Anne Jet 9th, at Terrace plc Desert City CO 123
берем сампл:
df.sample()
Получаем:
0 1 2 3 4 5
1 Jack McGinnis 220 hobo Av. Phila PA 9119
Или, если нужно несколько:
df.sample(3)
Получаем:
0 1 2 3 4 5
2 John "Da Man" Repici 120 Jefferson St. Riverside NJ 8075
3 Stephen Tyler 7452 Terrace "At the Plaza" road SomeTown SD 91234
0 John Doe 120 jefferson st. Riverside NJ 8075