📜  从给定的 Pandas DataFrame 中删除无限值(1)

📅  最后修改于: 2023-12-03 15:36:20.141000             🧑  作者: Mango

从给定的 Pandas DataFrame 中删除无限值

在处理数据时,可能会遇到NaN(Not a Number)或Inf(Infinity)这些无限值,这些值可能会影响数据分析的结果。在 Pandas 中,可以使用 dropna() 方法来删除 DataFrame 中的 NaN 值,但是默认情况下,该方法不能删除 Inf 值。本文将介绍如何从给定的 Pandas DataFrame 中删除无限值。

删除 NaN 值

首先,让我们看一下如何删除 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 值

如果要删除 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()方法。