python - 一行中的零除法导致所有其他行中的错误 Pandas
问题描述
考虑到这个df的两列:
ColA ColB
0 0.0 0.0
1 5.523288 0.0
2 6.115068 0.0
3 6.90411 1.0
4 9.172603 2.0
5 10.849315 2.0
6 12.230137 0.0
7 11.210959 0.0
8 10.849315 1.0
9 2.169863 0.0
尝试以这种方式生成计算列:
df['Result'] = df['ColB']/df['ColA']
由于第一行中的计算是除以零,因此此尝试会按预期引发“浮点除以零”错误。看到了这个,然后做了这个暂时导航:
try:
df['Result'] = df['ColB']/df['ColA']
except ZeroDivisionError:
df['Result'] = 0
但是,此代码始终产生此结果(即所有行都为零)
ColA ColB Result
0 0.0 0.0 0
1 5.523288 0.0 0
2 6.115068 0.0 0
3 6.90411 1.0 0
4 9.172603 2.0 0
5 10.849315 2.0 0
6 12.230137 0.0 0
7 11.210959 0.0 0
8 10.849315 1.0 0
9 2.169863 0.0 0
从索引第 3 行开始,Result 列应该产生不仅仅是零的浮点值。我还在上面的尝试中插入了“一些错误”,除了结果列中的所有值都显示“一些错误”。
我不知道为什么 pandas 没有绕过错误并在适当的行中产生有效结果。
解决方案
尝试这个 -
df['Result'] = (df['ColB']/df['ColA']).fillna(0)
ColA ColB Result
0 0.000000 0.0 0.000000
1 5.523288 0.0 0.000000
2 6.115068 0.0 0.000000
3 6.904110 1.0 0.144841
4 9.172603 2.0 0.218041
5 10.849315 2.0 0.184343
6 12.230137 0.0 0.000000
7 11.210959 0.0 0.000000
8 10.849315 1.0 0.092172
9 2.169863 0.0 0.000000
在此处查看文档
关于这一点——
try:
df['Result'] = df['ColB']/df['ColA']
except ZeroDivisionError:
df['Result'] = 0
我实际上无法重现您面临的结果。这是我所期望的。
ColA ColB Result
0 0.000000 0.0 NaN #<- 0/0 still throws nan
1 5.523288 0.0 0.000000 #<- divide by 0
2 6.115068 0.0 0.000000
3 6.904110 1.0 0.144841
4 9.172603 2.0 0.218041
5 10.849315 2.0 0.184343
6 12.230137 0.0 0.000000 #<- divide by 0
7 11.210959 0.0 0.000000
8 10.849315 1.0 0.092172
9 2.169863 0.0 0.000000
推荐阅读
- reactjs - 如何停止获取第一个顶部栏
- java - Java如何解析这个时间戳“20200926T221447Z”
- c# - C#如何检查数组中相邻值是否更大或更小并根据值分配点?
- typescript - 如何在 vuetify 中使用 include() 或 indexOf()?
- java - 这是什么“RecyclerView has no LayoutManager androidx.recyclerview.widget.RecyclerView”错误?
- angular - rxjs - startWith 基于 Observable 的初始值
- node.js - 节点命令行中未定义require
- uml - 关于为自助结账选择哪个 UML 图的建议
- android - 使用 NavController 时如何返回到上一个片段?
- node.js - 创建 Docker 映像时出现互联网连接问题