从给定的 Pandas DataFrame 中删除无限值
让我们讨论如何从 Pandas 数据框中删除无限值。首先让我们制作一个数据框:
例子:
Python3
# Import Required Libraries
import pandas as pd
import numpy as np
# Create a dictionary for the dataframe
dict = {'Name': ['Sumit Tyagi', 'Sukritin', 'Akriti Goel',
'Sanskriti', 'Abhishek Jain'],
'Age': [22, 20, np.inf, -np.inf, 22],
'Marks': [90, 84, 33, 87, 82]}
# Converting Dictionary to Pandas Dataframe
df = pd.DataFrame(dict)
# Print Dataframe
df
Python3
# Replacing infinite with nan
df.replace([np.inf, -np.inf], np.nan, inplace=True)
# Dropping all the rows with nan values
df.dropna(inplace=True)
# Printing df
df
Python3
# Changing option to use infinite as nan
pd.set_option('mode.use_inf_as_na', True)
# Dropping all the rows with nan values
df.dropna(inplace=True)
# Printing df
df
Python3
# Changing option to use infinite as nan
with pd.option_context('mode.use_inf_as_na', True):
# Dropping the rows with nan
# (or inf) values
df.dropna(inplace=True)
# Printing df
df
Python3
# Creating filter
df_filter = df.isin([np.nan, np.inf, -np.inf])
# Masking df with the filter
df = df[~df_filter]
# Dropping rows with nan values
df.dropna(inplace=True)
# Printing df
df
输出:
方法一:将infinite替换为Nan,然后用Nan删除行
我们将首先用 NaN 值替换无限值,然后使用 dropna() 方法删除具有无限值的行。 df.replace() 方法采用 2 个位置参数。首先是要替换的值列表,其次是要替换的值。
Python3
# Replacing infinite with nan
df.replace([np.inf, -np.inf], np.nan, inplace=True)
# Dropping all the rows with nan values
df.dropna(inplace=True)
# Printing df
df
输出:
方法 2:更改 Pandas 选项以将无限视为 Nan
Pandas 提供了使用无限作为 Nan 的选项。它使整个 pandas 模块将无限值视为 nan。我们可以通过使用 pd.set_option() 来做到这一点。它在整个 Jupyter Notebook 中全局设置选项。
句法:
pd.set_option('mode.use_inf_as_na', True)
它将选项设置为在整个会话期间使用无限作为 Nan 值,或者直到选项未设置回 False。
Python3
# Changing option to use infinite as nan
pd.set_option('mode.use_inf_as_na', True)
# Dropping all the rows with nan values
df.dropna(inplace=True)
# Printing df
df
输出:
方法 3:将无限视为 Nan 但使用 option_context
我们可以使用 pd.option_context() 代替全局设置选项的 pd.set_options(),它仅在特定范围内更改选项。
Python3
# Changing option to use infinite as nan
with pd.option_context('mode.use_inf_as_na', True):
# Dropping the rows with nan
# (or inf) values
df.dropna(inplace=True)
# Printing df
df
输出:
方法4:使用过滤器
我们将首先创建一个返回布尔数据框的过滤器,并使用此过滤器来屏蔽无限值。
Python3
# Creating filter
df_filter = df.isin([np.nan, np.inf, -np.inf])
# Masking df with the filter
df = df[~df_filter]
# Dropping rows with nan values
df.dropna(inplace=True)
# Printing df
df
输出: