在元组列表中删除包含nan的元组— Python

我有很长的元组列表,并且想要使用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 sqlalchemy在元组数据结构中插入多行


下一篇:python-格式说明符如何通过元组列表时取值