Случайный выбор из списков уникальных значений столбца кадра данных для нескольких строк синхронно - PullRequest
0 голосов
/ 21 октября 2019

У меня есть набор данных измерения 90000x18 (кадр данных pandas). Когда эти данные генерировались, считалось, что некоторые случайные переменные учитывают неопределенность, которая присутствует при выборе различных параметров в модели. Благодаря использованию этих случайных переменных для каждого набора основных характеристик результат был сгенерирован 100 раз, чтобы мы могли распределить эти случайные штрафы в выходных данных. Теперь я хочу извлечь эти 100 экземпляров с одинаковыми характеристиками (одинаковое значение в соответствующих столбцах) из набора данных 90000 экземпляров. Тем не менее, я хочу случайным образом выбрать эту комбинацию значений. Вот код, который я использовал:

import random
RandomList = pd.DataFrame()
while len(RandomList)==0:
    RandomList = df_te.loc[
        (df_te['constellation'] == random.choice(constellation)) & (df_te['volume'] == random.choice(volume)) &
        (df_te['link_len_n'] == random.choice(link_len_n)) & (df_te['link_len_m'] == random.choice(link_len_m)) &
        (df_te['link_len_s'] == random.choice(link_len_s)) & (df_te['guardband_l'] == random.choice(guardband_l)) &
        (df_te['guardband_r'] == random.choice(guardband_r)) & (df_te['traffic_l'] == random.choice(traffic_l)) &
        (df_te['traffic_r'] == random.choice(traffic_r)) & (df_te['constellation_l'] == random.choice(constellation_l)) &
        (df_te['constellation_r'] == random.choice(constellation_r))]

, однако он просто делает бесконечный цикл, который, я думаю, связан с тем, что, когда он случайным образом выбирает значение первого столбца, он ограничивает значения, которые можно выбратьиз следующих столбцов, и через некоторое время он не может найти какое-либо значение для оставшихся столбцов, которое будет соответствовать случайно выбранным предыдущим значениям. Переменные, которые были переданы в функции random.choice (), являются только списками уникальных значений каждого столбца с тем же именем, что и столбцы моего фрейма данных. Причина, по которой я использовал цикл while, заключается в том, что он возвращает фрейм данных (RandomList) нулевой длины без него. Это работало очень хорошо, когда я применял только первые пять случайных выборов, но когда я добавил к ним, чтобы я мог получить полный случайный выбор всех функций, это, кажется, создает бесконечный цикл. У кого-нибудь есть идеи о том, как я смогу это сделать ???

...