2017-04-25 8 views
2

AnacondaでPython 2.7.11を使用しています。ランダムに、パンダのデータフレームの行のサブセットに値を割り当てます。

PandasDataFrameのような行のサブセットの値をModifying a subset of rows in a pandas dataframeに設定する方法を理解していますが、これらの値をランダムに設定する必要があります。

以下のデータフレームdfがあります。 group == 2の値をランダムに設定して、それらがすべて1.0に等しくないようにするにはどうすればよいですか?

import pandas as pd 
import numpy as np 

df = pd.DataFrame([1,1,1,2,2,2], columns = ['group']) 
df['value'] = np.nan 
df.loc[df['group'] == 2, 'value'] = np.random.randint(0,5) 

print df 
    group value 
0  1 NaN 
1  1 NaN 
2  1 NaN 
3  2 1.0 
4  2 1.0 
5  2 1.0 

dfは、以下のようになります。

print df 
    group value 
0  1 NaN 
1  1 NaN 
2  1 NaN 
3  2 1.0 
4  2 4.0 
5  2 2.0 

答えて

3

あなたはグループのサイズを決定しなければならない2

g2 = df['group'] == 2 
df.loc[g2, 'value'] = np.random.randint(5, size=g2.sum()) 
print(df) 

    group value 
0  1 NaN 
1  1 NaN 
2  1 NaN 
3  2 3.0 
4  2 4.0 
5  2 2.0 
関連する問題