How do I drop nan
, inf
, and -inf
values from a DataFrame
without resetting mode.use_inf_as_null
?
Can I tell dropna
to include inf
in its definition of missing values so that the following works?
JavaScript
x
2
1
df.dropna(subset=["col1", "col2"], how="all")
2
Advertisement
Answer
First replace()
infs with NaN:
JavaScript
1
2
1
df.replace([np.inf, -np.inf], np.nan, inplace=True)
2
and then drop NaNs via dropna()
:
JavaScript
1
2
1
df.dropna(subset=["col1", "col2"], how="all", inplace=True)
2
For example:
JavaScript
1
20
20
1
>>> df = pd.DataFrame({"col1": [1, np.inf, -np.inf], "col2": [2, 3, np.nan]})
2
>>> df
3
col1 col2
4
0 1.0 2.0
5
1 inf 3.0
6
2 -inf NaN
7
8
>>> df.replace([np.inf, -np.inf], np.nan, inplace=True)
9
>>> df
10
col1 col2
11
0 1.0 2.0
12
1 NaN 3.0
13
2 NaN NaN
14
15
>>> df.dropna(subset=["col1", "col2"], how="all", inplace=True)
16
>>> df
17
col1 col2
18
0 1.0 2.0
19
1 NaN 3.0
20
The same method also works for Series
.