2024-09-28 23:24:42 发布
网友
我有一个数据帧,它有两列:
测向
有一些科学价值,比如0E-10,我想创建一个新的列,这样:
0E-10
df["new_col"]=df["fruits_ratio"]/(df["fruits_ratio"]+df["vegetables_ratio"])
但它给了我这样一个错误: DivisionByZero: [<class 'decimal.DivisionByZero'>]
DivisionByZero: [<class 'decimal.DivisionByZero'>]
有没有办法替换0-E10值或者如何避免错误?你知道吗
0-E10
谢谢
我认为float函数将为您解决这个问题float()。将整个列指定为浮动,因为大多数列都已浮动。你知道吗
float()
给出:
df = pd.DataFrame({'a':[0,1,2,3,0,1,2,3], 'b':[0,1,0,1,1,0,1,0]})
作为
a b 0 0 0 1 1 1 2 2 0 3 3 1 4 0 1 5 1 0 6 2 1 7 3 0
创建一个掩码来标识a或b不为零的地方,这些地方可以安全地进行计算。你知道吗
a
b
mask = (df['a'] != 0) | (df['b'] != 0)
面具
0 False 1 True 2 True 3 True 4 True 5 True 6 True 7 True
用NaN填充结果列,然后覆盖可以计算的结果:
NaN
df['c'] = pd.np.NaN df.loc[mask, 'c'] = df['a'] / (df['a'] + df['b'])
结果
a b c 0 0 0 NaN 1 1 1 0.500000 2 2 0 1.000000 3 3 1 0.750000 4 0 1 0.000000 5 1 0 1.000000 6 2 1 0.666667 7 3 0 1.000000
适用于您的问题:
mask = (df['fruits_ratio'] != 0) | (df['vegetables_ratio'] != 0) df['new_col'] = pd.np.NaN df.loc[mask, 'new_col'] = df['fruits_ratio'] / (df['fruits_ratio'] + df['vegetables_ratio'])
我认为float函数将为您解决这个问题
float()
。将整个列指定为浮动,因为大多数列都已浮动。你知道吗给出:
作为
创建一个掩码来标识
a
或b
不为零的地方,这些地方可以安全地进行计算。你知道吗面具
用
NaN
填充结果列,然后覆盖可以计算的结果:结果
适用于您的问题:
相关问题 更多 >
编程相关推荐