0
data = {
  "Food": ['apple', 'apple', 'apple','orange','apple','apple','orange','orange','orange'],
  "Calorie": [50, 40, 50,30,'Nan','Nan',50,30,'Nan']
}

#load data into a DataFrame object:
df = pd.DataFrame(data)

print(df) 

Having a data frame as above.Need to replace the missing value using median. Like if the food is apple and the Nan value need to be replace by median.orange is also just like that.The output needs to be like this:

Food  Calorie
0   apple       50
1   apple       40
2   apple       50
3  orange       30
4   apple       50
5   apple       50
6  orange       50
7  orange       30
8  orange       30

1 Answers1

4

You could do

df = df.replace('Nan',np.nan)
df.Calorie.fillna(df.groupby('Food')['Calorie'].transform('median') , inplace=True)
df
Out[170]: 
     Food  Calorie
0   apple     50.0
1   apple     40.0
2   apple     50.0
3  orange     30.0
4   apple     50.0
5   apple     50.0
6  orange     50.0
7  orange     30.0
8  orange     30.0
BENY
  • 317,841
  • 20
  • 164
  • 234