【问题标题】:Pandas: create new column in df with random integers from rangePandas:使用范围内的随机整数在 df 中创建新列
【发布时间】:2015-07-31 09:17:15
【问题描述】:

我有一个 50k 行的 pandas 数据框。我正在尝试添加一个新列,它是从 1 到 5 的随机生成的整数。

如果我想要 50k 个随机数,我会使用:

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

但为此我不知道该怎么做。

R 中的旁注,我会这样做:

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

有什么建议吗?

【问题讨论】:

  • 在pandas/numpy中有一个直接函数np.random.randint(low, high, size)。不需要像我们在 R 中那样实际生成范围 low:high 并从中采样。

标签: python pandas random integer range


【解决方案1】:

一种解决方案是使用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)

【讨论】:

    【解决方案2】:

    要添加一列随机整数,请使用randint(low, high, size)。没有必要浪费内存分配range(low, high);如果high 很大,那可能会占用大量内存。

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

    注意事项:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2020-07-12
      • 2014-05-08
      • 2014-08-11
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多