JavaScript
x
9
1
import pd as pandas
2
import random
3
import numpy as np
4
5
data = {'Item_No':['001', '002', '003','004', '005', '006','007','008','009'],
6
'Group_code':[331, 332, 333, 333, 333, 331, 331, nan, nan]}
7
df = pd.DataFrame(data)
8
9
I would like to apply a unique random number to ‘nan’ and keep the group code where group code exists. I’ve tried the following, but i cant seem to get the syntax right, what am i doing wrong.
JavaScript
1
2
1
df['Group_Code'] = df['Group_Code'].apply(lambda v: (random.random() * 1000) if pd.isnull(v['Group_Code'] else v['Group_Code'], axis = 1))
2
Advertisement
Answer
Step 0:-
Your Dataframe:-
JavaScript
1
4
1
data = {'Item_No':['001', '002', '003','004', '005', '006','007','008','009'],
2
'Group_code':[331, 332, 333, 333, 333, 331, 331, np.nan, np.nan]}
3
df = pd.DataFrame(data)
4
Step 1:-
Firstly define a function:-
JavaScript
1
6
1
def func(val):
2
if pd.isnull(val):
3
return random.random() * 1000
4
else:
5
return val
6
Step 2:-
Then just use apply()
method:-
JavaScript
1
2
1
df['Group_code']=df['Group_code'].apply(func).astype(int)
2
Now if you print df
you will get your expected output