Closed
Description
Noticed the following: DataFrame.where
with inplace=True
only works when DataFrame
is of a single dtype (because it relies on calling np.putmask
on DataFrame.values
which is only a view in the single dtype case)
In [1]: import pandas as p
In [2]: import numpy as np
In [3]: df=p.DataFrame({'a': [1.0, 2.0, 3.0, 4.0],
...: 'b': [4.0, 3.0, 2.0, 1.0]}) # single dtype
In [4]: df.where(df > 2, np.nan)
Out[4]:
a b
0 NaN 4
1 NaN 3
2 3 NaN
3 4 NaN
In [5]: df.where(df > 2, np.nan, inplace=True)
In [6]: df
Out[6]:
a b
0 NaN 4
1 NaN 3
2 3 NaN
3 4 NaN
In [7]: df=p.DataFrame({'a': [1, 2, 3, 4],
...: 'b': [4.0, 3.0, 2.0, 1.0]}) # mixed dtypes
In [8]: df.where(df > 2, np.nan) # ok
Out[8]:
a b
0 NaN 4
1 NaN 3
2 3 NaN
3 4 NaN
In [9]: df.where(df > 2, np.nan, inplace=True) # not ok
In [10]: df
Out[10]:
a b
0 1 4
1 2 3
2 3 2
3 4 1
Metadata
Metadata
Assignees
Labels
No labels