У меня есть pandas dataframe, скажем, df выглядит так:
Region ID
A 111
A 222
A 333
A 444
B 555
B 666
B 777
C 888
C 999
ID столбец имеет свои веса.В этом случае вес A равен 2, вес B равен 2, а вес C равен 1.
веса никогда не превышают количество значений в столбце «Регион», что означает, что вес A никогда не будет больше 4, поскольку мыесть 4 записи для A
Я хочу создать новый столбец и в этом столбце назначить случайные целочисленные значения в соответствии с весами в столбце ID, НО эти случайные значения должны быть равномерно распределены.Для большей ясности, я ожидаю, что новый фрейм данных должен выглядеть следующим образом:
Region ID Random_Value
A 111 1
A 222 2
A 333 1
A 444 2
B 555 2
B 666 2
B 777 1
C 888 1
C 999 1
Когда значения в столбце «Регион» нечетны, например, «B», я хочу назначить случайные значения одинаково, но остаток может иметь любоецелочисленное значение.
Когда значения в столбце «Регион» четные, например, «A» и его вес равен 2, мне нужно назначить случайное целочисленное значение от 1 до 2 включительно и количество этих случайных чиселцелые числа должны быть равны.
Я пробовал много способов, но безуспешно.Есть ли способ решить эту проблему?
Мой код следующий:
df['Random_Value'] = np.nan
A = df['region'] == 'A'
df.loc[A, 'Random_Value'] = np.random.randint(1,3, size=A.sum())