pandas 50k行のデータフレームがあります。ランダムに生成された1〜5の整数である新しい列を追加しようとしています。
5万個の乱数が必要な場合は、次を使用します。
df1['randNumCol'] = random.sample(xrange(50000), len(df1))
しかし、このために私はそれを行う方法がわかりません。
Rのサイドノート、私はやる:
sample(1:5, 50000, replace = TRUE)
助言がありますか?
1つの解決策は、 _np.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)
df1['randNumCol'] = np.random.choice([1, 9, 20], df1.shape[0])
_
結果を再現可能にするために、シードを 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
の配列/データフレームを生成する場合、サイズはTupleになります。 Pandas:ランダムな整数のデータフレームを作成する方法? )