1

行の値に基づいて各行に乱数を割り当て、データフレームを書き出す pandas データフレームがあります。

だから私はしようとしています:

for index, row in person[person['AGE_R'] == 1].iterrows():
    row = index, random.randint(1, 15)

しかし、そこからデータフレームを書き出す方法がわかりません(不可能ですか?)。実行可能な形式に変更できる可能性のあるタプルのリストを取得できましたが、もっと良い方法があると確信しています。

私は以前に試しました:

person[person['AGE_R'] == 1] = random.randint(1, 15)

しかし、それは 'AGE_R のすべての 1 を任意のランディントに設定します。便利ですが、私が探しているものではありません。

助言がありますか?

ありがとうございました!

4

1 に答える 1

1

ベクトル化された操作を行いたい場合は、numpy.random.randint を使用できます。

>>> df = pd.DataFrame({'AGE_R':[1,2,3,5,4,3,1]})
>>> df
   AGE_R
0      1
1      2
2      3
3      5
4      4
5      3
6      1
>>> df.ix[df['AGE_R'] == 1, 'AGE_R'] = np.random.randint(1, 15, len(df[df['AGE_R'] == 1]))
>>> df
   AGE_R
0      5
1      2
2      3
3      5
4      4
5      3
6      11

または、適用を使用できます。

>>> df.ix[df['AGE_R'] == 1, 'AGE_R'] = df.ix[df['AGE_R'] == 1].apply(lambda x: np.random.randint(1, 15), axis = 1)
>>> df
   AGE_R
0      5
1      2
2      3
3      5
4      4
5      3
6     12
于 2013-11-02T06:34:14.497 に答える