pandas 面试题挑战十一

把DataFrame中'Min.Price', 'Max.Price'缺失的值用该列的均值填充

现有数据如下:

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')

数据如下:

 

 把'Min.Price', 'Max.Price'缺失的值用该列的均值填充
解决方法如下:

df_out = df[['Min.Price', 'Max.Price']] = df[['Min.Price', 'Max.Price']].apply(lambda x: x.fillna(x.mean()))
df_out

 

 

把DataFrame中'Min.Price', 'Max.Price'缺失的值用该列的均值, 中位数填充

现有数据如下:

df = pd.read_csv('https://raw.githubusercontent.com/selva86/datasets/master/Cars93_miss.csv')

数据如下:

 

 把'Min.Price', 'Max.Price'缺失的值用该列的均值,中位数填充
解决方法如下

d = {'Min.Price': np.nanmean, 'Max.Price': np.nanmedian}
df[['Min.Price', 'Max.Price']] = df[['Min.Price', 'Max.Price']].apply(lambda x, d : x.fillna(d[x.name](x)), args=(d, ))
df

 

 

重点解读:
df[['Min.Price', 'Max.Price']].apply(lambda x, d : x.fillna(d[x.name]), args=(d, ))appley中,可以通过args参数传递全局变量,本例中传递的是d,注意传递是元组,所以别忘了后面的“,”。

 

posted @ 2020-12-04 12:11  Tracydzf  阅读(153)  评论(0编辑  收藏  举报