在pandas(master分支或即将推出的0.14)中,如何找到我的dataframe为null的索引?
当我做:
df.isnull()
我得到一个与df大小相同的布尔数据帧
如果我做:
df.isnull().index
我得到了原始df的索引.
我想要的是具有NaN条目的那些行的索引(在某些列或所有列上)
解决方法:
我会努力做到这一点:
In [11]: df = pd.DataFrame([[np.nan, 1], [0, np.nan], [1, 2]])
In [12]: df
Out[12]:
0 1
0 NaN 1
1 0 NaN
2 1 2
In [13]: pd.isnull(df.values)
Out[13]:
array([[ True, False],
[False, True],
[False, False]], dtype=bool)
In [14]: pd.isnull(df.values).any(1)
Out[14]: array([ True, True, False], dtype=bool)
In [15]: np.nonzero(pd.isnull(df.values).any(1))
Out[15]: (array([0, 1]),)
In [16]: df.index[np.nonzero(pd.isnull(df.values).any(1))]
Out[16]: Int64Index([0, 1], dtype='int64')
要查看一些时间,略大于df:
In [21]: df = pd.DataFrame([[np.nan, 1], [0, np.nan], [1, 2]] * 1000)
In [22]: %timeit np.nonzero(pd.isnull(df.values).any(1))
10000 loops, best of 3: 85.8 µs per loop
In [23]: %timeit df.index[df.isnull().any(1)]
1000 loops, best of 3: 629 µs per loop
如果你关心指数(而不是位置):
In [24]: %timeit df.index[np.nonzero(pd.isnull(df.values).any(1))]
10000 loops, best of 3: 172 µs per loop
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。