簡體   English   中英

Pandas:使用范圍內的隨機整數在 df 中創建新列

[英]Pandas: create new column in df with random integers from range

我有一個 50k 行的熊貓數據框。 我正在嘗試添加一個新列,它是從 1 到 5 的隨機生成的整數。

如果我想要 50k 個隨機數,我會使用:

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

但為此我不知道該怎么做。

R中的旁注,我會這樣做:

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

有什么建議么?

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

要添加一列隨機整數,請使用randint(low, high, size) 沒有必要浪費內存分配range(low, high) 如果high很大,那可能是很多內存。

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

筆記:

不需要額外導入 numpy 的選項:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM