python - 对空值执行算术运算
问题描述
当我尝试进行算术运算时,包括两个或多个面临空值问题的列。
我想在这里提到的另一件事是我不想填充缺失/空值。
实际上我想要像 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
解决方案
这里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
推荐阅读
- reactjs - 模态酶安装单元测试:未定义 MutationObserver
- r - 将面板数据从长到长,但扩展变量
- java - InfluxDB 的请求 选择时间 > 时间戳
- python - Bash 脚本手动执行 Python,但不是从 cron
- ruby - 无法解析加密文本的 JSON
- qt - QHBoxLayout 的宽度不正确
- airflow - 气流:用户界面中未显示日志
- winforms - 如何使用 ReactiveUI 和 winforms 绑定到用户控件
- excel - 为什么用“<=”运算符比较日期时excel不能正常工作?
- hibernate - Spring Data 和 Hibernate 中的不受控制的删除