Closed
Description
Calling .where()
treats None
differently depending on the value of inplace
.
In [1]: import pandas
In [2]: s1 = pandas.Series(['a', 'b', 'c'])
In [3]: s1.where(s1 != 'a', None)
Out[3]:
0 None
1 b
2 c
dtype: object
In [4]: s2 = pandas.Series(['a', 'b', 'c'])
In [5]: s2.where(s1 != 'a', None, inplace=True)
In [6]: s2
Out[6]:
0 NaN # would have expected None here!
1 b
2 c
dtype: object
This causes surprising behaviour when setting values in a series to None.
In [1]: import pandas
In [2]: s3 = pandas.Series(['a', 'b', 'c'])
In [3]: s3[0] = None
In [4]: s3[s3 == 'b'] = None
In [5]: s3
Out[5]:
0 None
1 NaN # Expected None here too!
2 c
dtype: object