![](/img/trans.png)
[英]How to create new pandas df column matching string length of another column with random consonant strings?
[英]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))
筆記:
size
只是一個整數。 一般來說,如果我們想生成一個randint()s
的數組/數據框,大小可以是一個元組,如Pandas:如何創建一個隨機整數的數據框? )range(low, high)
不再分配列表(可能使用大量內存),它產生一個range()
對象random.seed(...)
確定性和可重復性不需要額外導入 numpy 的選項:
df1['randNumCol'] = pd.Series(range(1,6)).sample(int(5e4), replace=True).array
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.