繁体   English   中英

Pandas 中非“NaN”值的索引

[英]index of non "NaN" values in Pandas

从 Pandas 数据框中,如何获取非“NaN”值的索引?

我的数据框是

    A    b     c
0   1    q1    1
1   2    NaN   3
2   3    q2    3
3   4    q1    NaN
4   5    q2    7

我想要b列不是NaN的行的索引。 (其他列中可能有 NaN 值,例如 c )

non_nana_index = [0,2,3,4]

使用此非“NaN”索引列表,我想创建b列没有“Nan”的新数据框

df2=

    A    b     c
0   1    q1    1
1   3    q2    3
2   4    q1    NaN
3   5    q2    7

只需过滤它们

In [62]:

df['b'].notnull()

Out[62]:
0     True
1    False
2     True
3     True
4     True
Name: b, dtype: bool
In [63]:

df[df['b'].notnull()]
Out[63]:
   A   b   c
0  1  q1   1
2  3  q2   3
3  4  q1 NaN
4  5  q2   7

DataFrames有一个dropna方法:

import pandas
import numpy

d = pandas.DataFrame({'A': [1, 2, 3, numpy.nan], 
                      'b': [1, 2, numpy.nan, 3],
                      'c': [1, numpy.nan, 2, 3]})
d.dropna(subset=['b'])

您也可以在此处使用query

In [5]: df.query('b == b')
Out[5]: 
   A   b    c
0  1  q1  1.0
2  3  q2  3.0
3  4  q1  NaN
4  5  q2  7.0

这与 NaN 相比,它本身返回False

In [5]: np.nan == np.nan
Out[5]: False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM