pandas replace NaN to None exhibits counterintuitive behaviour : <p>Given a series</p>

<pre><code>s = pd.Series([1.1, 1.2, np.nan])
s
0    1.1
1    1.2
2    NaN
dtype: float64
</code></pre>

<p>If the need arises to convert the NaNs to None (to, for example, work with parquets), then I would like to have </p>

<pre><code>0     1.1
1     1.2
2    None
dtype: object
</code></pre>

<p>I would assume <code>Series.replace</code> would be the obvious way of doing this, but here's what the function returns:</p>

<pre><code>s.replace(np.nan, None)

0    1.1
1    1.2
2    1.2
dtype: float64
</code></pre>

<p>The NaN was forward filled, instead of being replaced. Going through the <a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.replace.html" rel="noreferrer">docs</a>, I see that if the second argument is None, then the first argument should be a dictionary. Based on this, I would expect <code>replace</code> to either replace as intended, or throw an exception. </p>

<p>I believe the workaround here is </p>

<pre><code>pd.Series([x if pd.notna(x) else None for x in s], dtype=object) 
0     1.1
1     1.2
2    None
dtype: object
</code></pre>

<p>Which is fine. But I would like to understand why this behaviour occurs, whether it is documented, or if it is just a bug and I have to dust off my git profile and log one on the issue tracker... any ideas?</p>
