首页 > 解决方案 > 对空值执行算术运算

问题描述

当我尝试进行算术运算时,包括两个或多个面临空值问题的列。

我想在这里提到的另一件事是我不想填充缺失/空值。

实际上我想要像 1 + np.nan = 1 这样的东西,但它给了 np.nan。我试图通过 np.nansum 解决它,但它没有用。

df = pd.DataFrame({"a":[1,2,3,4],"b":[1,2,np.nan,np.nan]})
df
Out[6]: 
   a    b    c
0  1  1.0  2.0
1  2  2.0  4.0
2  3  NaN  NaN
3  4  NaN  NaN

和,

df["d"] = np.nansum([df.a + df.b])
df
Out[13]: 
   a    b    d
0  1  1.0  6.0
1  2  2.0  6.0
2  3  NaN  6.0
3  4  NaN  6.0

但我实际上想要,

df
Out[10]: 
   a    b    c
0  1  1.0  2.0
1  2  2.0  4.0
2  3  NaN  3.0
3  4  NaN  4.0

标签: pythonpandas

解决方案


这里np.nansum计算了整个列的总和。您不希望这样,您可能想np.nansum在两列上调用 ,例如:

df['d'] = np.nansum((df.a, df.b), axis=0)

然后产生预期的:

>>> df
   a    b    d
0  1  1.0  2.0
1  2  2.0  4.0
2  3  NaN  3.0
3  4  NaN  4.0

推荐阅读