从一个给定的Pandas数据框架中移除无限的值
让我们来讨论一下如何从Pandas数据框架中移除无限的值。首先让我们做一个数据框架。
示例:
# 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
输出:
方法1:用Nan替换无限,然后用Nan丢弃行。
我们将首先用NaN值替换无限值,然后用dropna()方法删除有无限值的行。df.replace()方法需要两个位置参数。第一个是你要替换的值的列表,第二个是你想用哪个值来替换这些值。
# 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的选项,将无限期视为南。
Pandas提供了将无限值作为Nan的选项。它使得整个pandas模块将无限的值视为Nan。我们可以通过使用pd.set_option()来做到这一点。它在整个Jupyter笔记本中全局设置该选项。
语法:
pd.set_option('mode.use_inf_as_na', True)
它将选项设置为在整个会话中使用无限作为南值,或者直到选项没有被设置为假值。
# 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()来全局设置选项,它只在特定范围内改变选项。
# 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:使用过滤器
我们将首先创建一个过滤器,返回一个布尔数据帧,并使用这个过滤器来掩盖无限的值。
# 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
输出: