在Python中将pandas DataFrame列彼此分开时,处理零分母的最佳方法是什么?例如:
df = pandas.DataFrame({"a": [1, 2, 0, 1, 5], "b": [0, 10, 20, 30, 50]})
df.a / df.b # yields error
Run Code Online (Sandbox Code Playgroud)
我想将分母为零的比率注册为NA(numpy.nan
).如何在熊猫中有效地完成这项工作?
转换为float64
在列级别上不起作用:
In [29]: df
Out[29]:
a b
0 1 0
1 2 10
2 0 20
3 1 30
4 5 50
In [30]: df["a"].astype("float64") / df["b"].astype("float64")
...
FloatingPointError: divide by zero encountered in divide
Run Code Online (Sandbox Code Playgroud)
我怎么能只为特定列而不是整个df做到这一点?
我有以下数据:
a = pd.Series([1, 2, 3])
b = pd.Series([0, 0, 0])
Run Code Online (Sandbox Code Playgroud)
如果被零除,在某些情况下我想
但是以下给出了“意外”结果:
a.div(b, fill_value = 0)
0 inf
1 inf
2 inf
a.div(b).fillna(0)
0 inf
1 inf
2 inf
a.div(b).combine_first(a)
0 inf
1 inf
2 inf
Run Code Online (Sandbox Code Playgroud)
我想到达:
情况1:将数据设置为特定值
0 0
1 0
2 0
Run Code Online (Sandbox Code Playgroud)
情况2:将值设置为特定的序列
0 1
1 2
2 3
Run Code Online (Sandbox Code Playgroud)