seleccionar nueva insertar filas data columnas columna agregar python pandas random integer range

python - insertar - Pandas: crea una nueva columna en df con enteros aleatorios del rango



seleccionar columnas en pandas (2)

Para agregar una columna de enteros aleatorios, use randint(low, high, size) . No es necesario desperdiciar el range(low, high) asignación de memoria range(low, high) ; eso podría ser mucha memoria si es alto.

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

(Tenga en cuenta también que cuando solo estamos agregando una sola columna, el size es solo un entero. En general, si queremos generar una matriz / dataframe de randint()s , el tamaño puede ser una tupla, como en Pandas: Cómo crear un marco de datos de enteros aleatorios? )

Tengo un marco de datos de pandas con 50k filas. Estoy tratando de agregar una nueva columna que es un entero generado aleatoriamente de 1 a 5.

Si quiero 50k números aleatorios, usaría:

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

pero para esto no estoy seguro de cómo hacerlo.

Nota al margen en R, lo haría:

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

¿Alguna sugerencia?


Una solución es usar 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])

Para que los resultados sean reproducibles, puedes establecer la semilla con np.random.seed(42) .