Count NaN in Python list
如何计算列表中出现的NaN?我的数据如下:
1
| [365788, 267102, 170941, 'NaN', 243293, 267093, 'NaN', 370448, 'NaN', 197091] |
- 您的列表中是否真的是'NaN'字符串,而不是实际的浮点NaN?(如果是,那为什么?)如果他们是真正的浮点型nan,普通的"数这件事"答案将被NaN != NaN挫败。
- 结果发现它们是"nan"字符串,list.count("nan")方法起作用。
您可以使用collections.Counter:
1 2 3
| from collections import Counter
Counter(yourlist) |
您将拥有列表中每个唯一值的出现次数。
另一个选择是:
使用列表的count方法:
yourlist.count('Nan')
- 但是,如果这些值是实际的nan(即float('NaN')),则这些方法都不起作用。
- 事实上。。。这是正确的。我希望答案有一个可行的解决方案,否则我会在下班后更新我的答案。
- 如果是"真正的"NaN:import math; len([0 for x in your_list if math.isnan(x)])。
- @Ryan我会用sum(math.isnan(x) for x in your_list)来提高记忆效率。
- 这更好!我考虑使用sum,但忘记了它需要一个生成器,所以我不想重复两次。我相信伦是常数?
- 正如我刚发现的那样,如果x不是浮点数类型,比如没有,math.isnan(x)不喜欢它。x if x is not None else 0在这种情况下有帮助。