27

Pythonでpandas DataFrame列を互いに分割するときにゼロ分母を処理する最良の方法は何ですか? 例えば:

df = pandas.DataFrame({"a": [1, 2, 0, 1, 5], "b": [0, 10, 20, 30, 50]})
df.a / df.b  # yields error

分母が0の比率を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

df全体ではなく、特定の列に対してのみ行うにはどうすればよいですか?

4

3 に答える 3

1

通常、Panda でゼロで除算する場合、値は無限大 ( np.inf) に設定されます。無限値を避けるには、 と を使用しdivideます。replace

df['one'].div(df['two']).replace(np.inf, 0)

見る:

于 2020-10-18T13:56:26.530 に答える