@bogatron tiene razón, puede usarlo where, vale la pena señalar que puede hacer esto de forma nativa en pandas:
df1 = df.where(pd.notnull(df), None)
Nota: esto cambia el dtype de todas las columnas a object.
Ejemplo:
In [1]: df = pd.DataFrame([1, np.nan])
In [2]: df
Out[2]:
0
0 1
1 NaN
In [3]: df1 = df.where(pd.notnull(df), None)
In [4]: df1
Out[4]:
0
0 1
1 None
Nota: lo que no puede hacer es refundir los DataFrames dtypepara permitir todos los tipos de tipos de datos, usando astype, y luego el fillnamétodo DataFrame :
df1 = df.astype(object).replace(np.nan, 'None')
Desafortunadamente, ni esto, ni el uso replace, funcionan con Nonever este problema (cerrado) .
Como acotación al margen, vale la pena señalar que para la mayoría de los casos de uso no es necesario reemplazar NaN con None, consulte esta pregunta sobre la diferencia entre NaN y None en pandas .
Sin embargo, en este caso específico parece que sí (al menos en el momento de esta respuesta).
NoneenNULLlugar denan?