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)
.