Подтвердить что ты не робот

Pandas: создать новый столбец в df со случайными целыми числами от диапазона

У меня есть кадр данных pandas с 50 тыс. строк. Я пытаюсь добавить новый столбец, который представляет собой произвольно генерируемое целое число от 1 до 5.

Если я хочу 50k случайных чисел, я бы использовал:

df1['randNumCol'] = random.sample(xrange(50000), len(df1))

но для этого я не уверен, как это сделать.

Боковое примечание в R, я бы сделал:

sample(1:5, 50000, replace = TRUE)

Любые предложения?

4b9b3361

Ответ 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: как создать кадр данных случайных чисел?)