python - 删除元组列表中包含 nan 的元组 - Python

标签 python list tuples nan spyder

我有一个很长的元组列表,想要使用 Python 删除其中包含 nan 的任何元组。

我目前拥有的: x = [('录音开始', 0), (nan, 4), (nan, 7), ..., ('事件标记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)]

关于python - 删除元组列表中包含 nan 的元组 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486938/

相关文章:

mysql - 如何在php codeigniter中将元组查询从 "or"转换为 "and"操作

performance - 使用类和实例时的 Haskell 性能

python - 将 Pandas tseries 对象转换为 DataFrame

python - sknn多层感知器分类器

python - 如何返回与条件匹配的列表子集

python - 使用 ReGex 、Python 匹配表达式

python - 目录存在时 Shutil.copy IO Error2

python - 使用 Python 线程与 async/await 有什么区别

python - 解析 Pandas 数据框列以检查相同的值

python - 元组打印元素 if 条件 else 打印范围内的另一个值