我有一个数据框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
由于
答案 0 :(得分:3)
您最初可以将所有值设置为零,然后创建一个掩码,使用有效分母定位所有行,即power
大于零(gt(0)
)。最后,将掩码与loc
一起使用以计算second_step_power
。
df['second_step_power'] = 0
mask = df.average_power.gt(0)
df.loc[mask, 'second_step_power'] = \
df.loc[mask, 'first_power'] / df.loc[mask, 'average_power']