2017-10-25 2 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) 

아래 코드로 시도했지만 모든 행에 하나의 임의 값만 지정합니다.

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 

편집

내가 3,425,689 (행) 난수를 생성하는 시간이 오래 걸릴 것 같아요. 나는이 순간 첫 번째 길을 고수 할 것이다.

+0

당신이 – Dark

+0

@Bharathshetty 여기 당신이가는 df_members의 작은 샘플을 추가 할 수 원하는 당신을 줄 것이다! –

답변

1

랜덤 값의 모양을 생성하는 "size" argument이 누락되었습니다.

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

당신이

관련 문제