web-dev-qa-db-ja.com

パンダ:範囲内のランダムな整数でdfに新しい列を作成します

pandas 50k行のデータフレームがあります。ランダムに生成された1〜5の整数である新しい列を追加しようとしています。

5万個の乱数が必要な場合は、次を使用します。

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

しかし、このために私はそれを行う方法がわかりません。

Rのサイドノート、私はやる:

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

助言がありますか?

47
screechOwl

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) で設定できます。

68
Matt

ランダムな整数の列を追加するには、randint(low, high, size)を使用します。 range(low, high);の割り当てにメモリを浪費する必要はありません。 highが大きい場合、大量のメモリになる可能性があります。

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

(また、単一の列を追加する場合、sizeは単なる整数であることに注意してください。一般に、randint()sの配列/データフレームを生成する場合、サイズはTupleになります。 Pandas:ランダムな整数のデータフレームを作成する方法?

12
smci