簡體   English   中英

在元組列表中刪除包含nan的元組— Python

[英]Remove a tuple containing nan in list of tuples — Python

我有很長的元組列表,並且想要使用Python刪除其中包含nan的任何元組。

我目前所擁有的:x = [('Recording start',0),(nan,4),(nan,7),...,('Event marker 1',150)]

我正在尋找的結果:x = [('記錄開始',0),('事件標記1',150)]

我嘗試使用np.isnan及其變體,但沒有成功,並不斷出現錯誤:輸入類型不支持ufunc'isnan',並且根據輸入,不能安全地將輸入強制轉換為任何受支持的類型強制轉換規則“安全”

任何建議,將不勝感激!!

您可以使用列表推導來檢查元組中的任何項目是否為NaN。 首先檢查類型,然后使用math.isnan檢查,因為它不適用於其他類型:

import math

x = [('Recording start', 0), (float('nan'), 4), (float('nan'), 7), ('Event marker 1', 150)]
res = [t for t in x if not any(isinstance(n, float) and math.isnan(n) for n in t)]
print(res)

輸出:

[('Recording start', 0), ('Event marker 1', 150)]

使用列表理解:

x = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]

new = [i for i in x if nan not in i]
res = [n for n in x if not nan in n]

返回x中沒有對象nan所有對象。

至少在我使用python編寫nan時,reture被定義為“未定義錯誤”,這就是為什么我自己定義它的原因。 我認為您可以根據需要使用Python過濾器功能。 參見示例:

nan = float('nan')
lst = [('Recording start', 0), (nan, 4), (nan, 7), ('Event marker 1', 150)]
y = filter( lambda x: nan not in x, lst)
print y

[('錄制開始',0),('事件標記1',150)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM