具有混合数据类型的numpy数组中的isnan不起作用

时间:2015-05-13 15:18:10

标签: python numpy pandas

我使用pandas来解析excel表,其中包含一个不平衡的面板。所以在某些列中有空单元格,它们被解析为NaN。然后我想获得没有NaN条目的面板数据的唯一值。但是,np.isnan失败是因为条目是字符串而nan条目是浮点数。有一个很好的出路吗?

import pandas as pd
import numpy as np

xls = pd.ExcelFile('File.xls')
data = xls.parse('Sheet1', index_col=None, na_values=['NA'])
uniqueID  = pd.unique(data.values.ravel())
uniqueID[~np.isnan(uniqueID)]

1 个答案:

答案 0 :(得分:0)

无法访问您的数据,对于pandas至少有顶级isnull,这也适用于dfseries,您也可以致电{{3 }}:

In [3]:

df = pd.DataFrame({'a':['asdsa', np.NaN, 98]})
df
Out[3]:
       a
0  asdsa
1    NaN
2     98
In [13]:

pd.notnull(df)
Out[13]:
       a
0   True
1  False
2   True

我们可以在系列中调用notnull()来过滤行:

In [14]:

df[df['a'].notnull()]
Out[14]:
       a
0  asdsa
2     98

或者我们可以在df上调用dropna

In [15]:

df.dropna()
Out[15]:
       a
0  asdsa
2     98