python Pandas:在df中创建一个新列,其中包含范围内的随机整数

ymdaylpp  于 2023-03-16  发布在  Python
关注(0)|答案(3)|浏览(272)

我有一个50k行的Pandas数据框,我想添加一个新的列,它是一个随机生成的1到5的整数。
如果我想要5万个随机数,我会用途:

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

但我不知道该怎么做。
R边注,我会这样做:

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

有什么建议吗?

mwkjh3gx

mwkjh3gx1#

一种解决方案是使用numpy.random.randint

import numpy as np
df1['randNumCol'] = np.random.randint(1, 6, df1.shape[0])

或者,如果数字不连续(尽管较慢),则可以使用以下命令:

df1['randNumCol'] = np.random.choice([1, 9, 20], df1.shape[0])

为了使结果可重现,您可以使用numpy.random.seed设置种子(例如np.random.seed(42)

odopli94

odopli942#

要添加一列随机整数,使用randint(low, high, size),不需要浪费内存分配range(low, high),这是Python 2.x中的做法;如果high很大,则这可能是大量存储器。

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

注:

icomxhvb

icomxhvb3#

一个不需要为numpy进行额外导入的选项:

df1['randNumCol'] = pd.Series(range(1,6)).sample(int(5e4), replace=True).array

相关问题