2017-10-25 16 views
3

整数値(n行)の列があります。私は、ある条件を満たす値の正規分布の範囲にある乱数を生成したい。私は以下のコードで試してみましたが、遅すぎます。列内の複数の行に異なる乱数を生成

df_members['bd'] = df_members.bd.apply(lambda x: np.random.normal(bd_mean, bd_sd) if float(x)==-99999 else x) 

私は以下のコードで試しましたが、すべての行に1つのランダムな値しか割り当てません。

bd_mean = 29.2223808862 
bd_std = 10.4168850957 
df_members[df_members['bd'] == -99999] = np.random.normal(bd_mean, bd_sd) 

例データ:

          msno city  bd gender registered_via 
0 URiXrfYPzHAlk+7+n7BOMl9G+T7g8JmrSnT/BU8GmEo=  1 -99999  NaN    9 
1 U1q0qCqK/lDMTD2kN8G9OXMtfuvLCey20OAIPOvXXGQ=  1  26  NaN    4 
2 W6M2H2kAoN9ahfDYKo3J6tmsJRAeuFc9wl1cau5VL1Q=  1 -99999  NaN    4 
3 1qE5+cN7CUyC+KFH6gBZzMWmM1QpIVW6A43BEm98I/w=  5  17 female    4 
4 SeAnaZPI+tFdAt+r3lZt/B8PgTp7bcG/1os39u4pLxs=  1 -99999  NaN    4 

EDIT

私は3425689(行)乱数を生成することは、長い時間がかかるだろうことを推測。私はこの瞬間に最初の道に固執するでしょう。

+0

はあなたがここにあなたが行くdf_members – Dark

+0

@Bharathshettyの小さなサンプルを追加することができます何をしたいあなたを与えるだろう! –

答えて

1

生成する乱数の形状を与える"size" argumentがありません。

df_members[df_members['bd'] == -99999] = np.random.normal(bd_mean, bd_sd,len(df_members[df_members['bd'] == -99999])) 

あなたは