【发布时间】:2016-11-27 12:40:10
【问题描述】:
我有一个数据框dayData,其中包括以下列'ratio' 和'first_power' 为以下类型的列:
Name: ratio, dtype: float64 first power
Name: first_power, dtype: object average power
ratio average_power
0 5 8.0
1 6 4.0
2 7 0.0
3 0 6.0
4 8 5.0
5 9 4.0
6 8 2.0
7 7 8.0
8 6 0.0
9 5 5.0
10 8 4.0
我的流程的下一个阶段是通过使用以下公式将 2 列除以创建第二步幂:
dayData["second_step_power"] = np.where(dayData.average_power == 0.0, 0, dayData.first_power/dayData.average_power)
显然你不能除以零,所以如果 average_power 为零,我试图将 second_step_power 设置为 0,但是我得到了错误:
ZeroDivisionError: float division by zero
处理零的正确方法是什么?
我的理想输出是:
ratio average_power second_step_power
0 5 8.0 0.625
1 6 4.0 1.500
2 7 0.0 0.000
3 0 6.0 0.000
4 8 5.0 1.600
5 9 4.0 2.250
6 8 2.0 4.000
7 7 8.0 0.875
8 6 0.0 0.000
9 5 5.0 1.000
10 8 4.0 2.000
【问题讨论】:
-
可能是浮动 pt 问题。修复可能正在使用:
np.isclose(dayData.average_power,0). -
谢谢,我试过 dayData["second_step_power"] = np.where(np.isclose(dayData.average_power,0), 0, dayData.first_power/dayData.average_power) 但遇到了同样的问题