manejo de ceros en pandas DataFrames columna divisiones en Python

¿Cuál es la mejor manera de manejar los denominadores cero cuando se dividen las columnas de DataFrame de pandas en Python? por ejemplo:

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

Me gustaría que las razones donde el denominador es cero se registren como NA ( numpy.nan ). ¿Cómo se puede hacer esto eficientemente en pandas?

La float64 a float64 no funciona a nivel de columnas:

 In [29]: df Out[29]: ab 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 

¿Cómo puedo hacerlo solo para columnas particulares y no para df completo?

Necesitas trabajar en flotadores, de lo contrario tendrás una división entera, probablemente no lo que quieres

 In [12]: df = pandas.DataFrame({"a": [1, 2, 0, 1, 5], "b": [0, 10, 20, 30, 50]}).astype('float64') In [13]: df Out[13]: ab 0 1 0 1 2 10 2 0 20 3 1 30 4 5 50 In [14]: df.dtypes Out[14]: a float64 b float64 dtype: object 

Aquí hay una forma

 In [15]: x = df.a/df.b In [16]: x Out[16]: 0 inf 1 0.200000 2 0.000000 3 0.033333 4 0.100000 dtype: float64 In [17]: x[np.isinf(x)] = np.nan In [18]: x Out[18]: 0 NaN 1 0.200000 2 0.000000 3 0.033333 4 0.100000 dtype: float64 

Aquí hay otra manera

 In [20]: df.a/df.b.replace({ 0 : np.nan }) Out[20]: 0 NaN 1 0.200000 2 0.000000 3 0.033333 4 0.100000 dtype: float64