首页 > 解决方案 > 如何用列的平均值填充 numpy 数组 nan 值?

问题描述

我将 pandas 数据框的一部分转换为 numpy 数组,我想用列的平均值填充它的值,类似于我在 pandas 中执行以下操作的方式:

df.fillna(df.mean(), inplace = True)

到目前为止,我能够做到的唯一方法是遍历列。还有其他方法吗?

谢谢你!

标签: pythonpandasnumpy

解决方案


你可以np.where像下面这样使用:

df = pd.DataFrame({'A': [2, 1, np.nan, 6], 'B': [4, np.nan, 8, np.nan]})

a = df.to_numpy()
print(a)
# [[ 2.  4.]
#  [ 1. nan]
#  [nan  8.]
#  [ 6. nan]]

a = np.where(np.isnan(a), np.nanmean(a, axis=0), a) 
print(a)   

输出:

[[2. 4.]
 [1. 6.]
 [3. 8.]
 [6. 6.]]

推荐阅读