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

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

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

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

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

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

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

Какие-либо предложения?

2 Solutions collect form web for “Pandas: создать новый столбец в df со случайными целыми числами от диапазона”

Одним из решений является использование 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) .

Чтобы добавить столбец случайных чисел, используйте randint(low, high, size) . Нет необходимости тратить range(low, high) выделения памяти range(low, high) ; это может быть большой объем памяти, если high размер.

 df1['randNumCol'] = np.random.randint(0,5, size=len(df1)) 

(Обратите внимание также, что когда мы просто добавляем столбец, размер – это просто целое число. В общем случае, если мы хотим сгенерировать массив / randint()s из randint()s , размер может быть кортежем, как в Pandas: как создать кадр данных случайных чисел? )

Interesting Posts
Python - лучший язык программирования в мире.