我有几个 DataFrame(DataFrame 具有相同的索引和列结构)。问题是这些数据框中存在 NaN 值。
我想用其他 DataFrame 对应值的平均值替换这些 NaN 值。
例如,让我们看一下 3 个数据帧。
DataFrame1 与 1:M2
NaN:
M1 M2 M3
0 1 1 2
1 8 NaN 9
2 4 2 7
3 9 6 3
DataFrame 2 在 0:M3
处具有 NaN 值:
M1 M2 M3
0 2 3 NaN
1 1 1 6
2 1 2 9
3 4 6 2
数据帧3:
M1 M2 M3
0 1 4 2
1 2 9 1
2 1 6 5
3 1 NaN 4
因此,我们将第一个 DataFrame 中的 NaN 替换为 5 (9+1)/2
。第二个 NaN 应替换为 2,因为 (2+2)/2
,第三个 NaN 应替换为 6,依此类推。
有什么好的、优雅的方法吗?
最佳答案
这是使用numpy.nanmean
的一种方法。
avg = np.nanmean([df1.values, df2.values, df3.values], axis=0)
for df in [df1, df2, df3]:
df[df.isnull()] = avg
df = df.astype(int)
注意:由于 np.nan
是 float
,我们显式转换回 int
。
关于python - 将整个数据框中的 NaN 值替换为其他值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49735028/