Pandas: создать новый столбец в df со случайными целыми числами от диапазона
У меня есть кадр данных pandas с 50 тыс. строк. Я пытаюсь добавить новый столбец, который представляет собой произвольно генерируемое целое число от 1 до 5.
Если я хочу 50k случайных чисел, я бы использовал:
df1['randNumCol'] = random.sample(xrange(50000), len(df1))
но для этого я не уверен, как это сделать.
Боковое примечание в R, я бы сделал:
sample(1:5, 50000, replace = TRUE)
Любые предложения?
Ответы
Ответ 1
Одним из решений является использование np.random.randint
:
import numpy as np
df1['randNumCol'] = np.random.randint(1, 6, df1.shape[0])
# or if the numbers are non-consecutive (albeit slower)
df1['randNumCol'] = np.random.choice([1, 9, 20], df1.shape[0])
Чтобы сделать воспроизводимые результаты, вы можете установить семя np.random.seed(42)
.
Ответ 2
Чтобы добавить столбец случайных целых чисел, используйте randint(low, high, size)
. Нет необходимости выделять память range(low, high)
; это может быть большой объем памяти, если high
велико.
df1['randNumCol'] = np.random.randint(0,5, size=len(df1))
(Обратите внимание также, что когда мы просто добавляем столбец, размер является просто целым числом. В общем случае, если мы хотим сгенерировать массив /dataframe randint()s
, размер может быть кортежем, как в Pandas: как создать кадр данных случайных чисел?)