One solution is to use numpy.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), you can use this:
df1['randNumCol'] = np.random.choice([1, 9, 20], df1.shape[0])
In order to make the results reproducible you can set the seed with numpy.random.seed (e.g. np.random.seed(42))