📅  最后修改于: 2023-12-03 15:36:20.141000             🧑  作者: Mango
在处理数据时,可能会遇到NaN(Not a Number)或Inf(Infinity)这些无限值,这些值可能会影响数据分析的结果。在 Pandas 中,可以使用 dropna()
方法来删除 DataFrame 中的 NaN 值,但是默认情况下,该方法不能删除 Inf 值。本文将介绍如何从给定的 Pandas DataFrame 中删除无限值。
首先,让我们看一下如何删除 NaN 值。假设我们有一个包含 NaN 值的 DataFrame,如下所示:
import pandas as pd
import numpy as np
data = {'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8],
'C': [9, 10, 11, np.nan]}
df = pd.DataFrame(data)
print(df)
输出:
A B C
0 1.0 5.0 9.0
1 2.0 NaN 10.0
2 NaN 7.0 11.0
3 4.0 8.0 NaN
现在,我们将使用 dropna()
方法来删除 NaN 值:
df = df.dropna()
print(df)
输出:
A B C
0 1.0 5.0 9.0
dropna()
方法默认按行删除 NaN 值,也就是说,只要某一行中存在 NaN 值,该行就会被删除。
如果要删除 Inf 值,我们可以使用 NumPy 中的 isinf()
方法来检查 DataFrame 中的每一个元素是否为 Inf 值。然后,我们可以把 Inf 值替换成 NaN 值,并使用 dropna()
方法删除 NaN 值。
下面是一个示例代码:
df[df == np.inf] = np.nan # 将 Inf 值替换成 NaN 值
df = df.dropna() # 删除 NaN 值
print(df)
输出:
A B C
0 1.0 5.0 9.0
在本文中,我们学习了如何从给定的 Pandas DataFrame 中删除 NaN 和 Inf 值。对于NaN值,我们可以直接使用dropna()
方法。对于Inf值,我们需要先将其替换成NaN值,然后再使用dropna()
方法。