当存在Unicode值时,计算NaNs

5

大家早上好,

我有一个包含多个序列的 pandas 数据帧。对于数据帧中的某个序列,其数据类型为 Unicode、NaN 和 int/float。我想要确定该序列中 NaN 的数量,但是不能使用内置的numpy.isnan 方法,因为它不能安全地将 Unicode 数据转换为它可以解释的格式。我已经提出了一种解决方法,但我想知道是否有更好/更符合 Python 习惯的方法来完成此任务。

提前感谢,Myles

import pandas as pd
import numpy as np

test = pd.Series(data = [NaN, 2, u'string'])
np.isnan(test).sum()
#Error

#Work around
test2 = [x for x in test if not(isinstance(x, unicode))]
numNaNs = np.isnan(test2).sum()
1个回答

7
使用 pandas.isnull
In [24]: test = pd.Series(data = [NaN, 2, u'string'])

In [25]: pd.isnull(test)
Out[25]: 
0     True
1    False
2    False
dtype: bool

请注意,pd.isnull 也将 None 视为 True
In [28]: pd.isnull([NaN, 2, u'string', None])
Out[28]: array([ True, False, False,  True], dtype=bool)

谢谢,这正是我在寻找的。我非常感激您迅速而完整的回复。(一旦10分钟等待时间过去,我会接受您的答案) - Myles Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接