在 Python 中從列表中移除 NaN

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 math.isnan() 方法從列表中刪除 NaN
  2. 在 Python 中使用 numpy.isnan() 方法從列表中刪除 NaN
  3. 在 Python 中從字串列表中刪除 NaN
  4. 在 Python 中使用 pandas.isnull() 方法從列表中刪除 NaN
在 Python 中從列表中移除 NaN

本教程將探討各種方法,以從 Python 列表中查詢和刪除 NaN 值。程式設計中的 NaN 值表示 Not a Number,這意味著變數的值不是數字。

如果陣列或列表中出現 NaN 值,則會在計算中產生問題和錯誤。我們還將研究從本教程的列表中刪除字串值 nan 的方法。我們可以使用以下方法從列表中刪除 NaN'nan' 值。

在 Python 中使用 math.isnan() 方法從列表中刪除 NaN

math.isnan(value) 方法採用數字 value 作為輸入,如果 valueNaN 值,則返回 True,否則返回 False。因此,我們可以使用 math.isnan() 方法檢查列表或數字陣列中是否存在 NaN 值。

我們需要 math.isnan() 方法,因為 if float('NaN') == float('NaN') 在 Python 中返回 False,或者我們可以說兩個 NaN 值在 Python 中不相等。下面的示例程式碼演示瞭如何使用 math.isnan() 方法從列表中刪除 NaN 值。

import math

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if math.isnan(x) == False]
print(newlist)

輸出:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

在 Python 中使用 numpy.isnan() 方法從列表中刪除 NaN

np.isnan(array) 方法,將 array 作為輸入,如果對應的索引的值為 NaN,則返回 True,否則返回 False

下面的示例程式碼演示瞭如何使用 numpy.isnan() 方法從列表中刪除 NaN 值:

import numpy as np

mylist = [1, 2, float("nan"), 8, 6, 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if np.isnan(x) == False]
print(newlist)

輸出:

[1, 2, nan, 8, 6, 4, nan]
[1, 2, 8, 6, 4]

在 Python 中從字串列表中刪除 NaN

現在,讓我們假設數字列表已轉換為字串型別,並且我們要檢查它是否包含任何 NaN 值。轉換為字串型別後,NaN 值將變成等於'nan'的字串,並且可以通過將其與'nan'進行比較輕鬆地檢測和刪除。

下面的示例程式碼演示瞭如何從字串資料型別列表中刪除 NaN 值:

mylist = [1, 2, "nan", 8, 6, 4, "nan"]
mylist = [str(x) for x in mylist]
print(mylist)
newlist = [x for x in mylist if x != "nan"]
print(newlist)

輸出:

['1', '2', 'nan', '8', '6', '4', 'nan']
['1', '2', '8', '6', '4']

在 Python 中使用 pandas.isnull() 方法從列表中刪除 NaN

pandas.isnull(obj) 以標量或類似陣列的 obj 作為輸入,如果值等於 NaNNoneNaT,則返回 True,否則返回 False

示例程式碼演示瞭如何使用 pandas.isnull() 方法從 Python 的列表中刪除 NaN 值。

import pandas as pd

mylist = [1, 2, float("nan"), 8, float("nan"), 4, float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False]
print(newlist)

輸出:

[1, 2, nan, 8, nan, 4, nan]
[1, 2, 8, 4]

現在假設我們不知道列表的型別,或者列表是否包含各種資料型別的資料。在這種情況下,我們可以使用 pandas.isnull() 方法,通過將列表中的每個值與'nan'值進行比較,來檢查並從列表中刪除 NaN 值和'nan'值。

我們可以使用 pandas.isnull() 方法,因為與前面提到的方法不同,如果給出字串資料型別作為輸入,則 pandas.isnull() 方法不會返回錯誤。因此,我們可以使用 pandas.isnull() 方法從列表或 Python 陣列中刪除 NaN'nan'值。

下面的示例程式碼演示瞭如何使用 pandas.isnull() 方法和'nan'值從 Python 列表中刪除 NaN'nan'值。

import pandas as pd

mylist = ["John", 23, "nan", "New York", float("nan")]
print(mylist)
newlist = [x for x in mylist if pd.isnull(x) == False and x != "nan"]
print(newlist)

輸出:

['John', 23, 'nan', 'New York', nan]
['John', 23, 'New York']

相關文章 - Python List