【问题标题】:Filter NaN values in a dataframe column过滤数据框列中的 NaN 值
【发布时间】:2018-02-19 03:16:46
【问题描述】:
y = data.loc[data['column1'] != float('NaN'),'column1']

上面的代码仍在“column1”中返回具有 NaN 值的行。不知道我做错了什么..请帮忙!

【问题讨论】:

    标签: python pandas dataframe filter nan


    【解决方案1】:

    NaN,根据定义不等于NaN

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

    在维基百科上阅读mathematical concept


    选项 1

    使用pd.Series.notnull

    df
    
       column1
    0      1.0
    1      2.0
    2    345.0
    3      NaN
    4      4.0
    5     10.0
    6      NaN
    7    100.0
    8      NaN
    
    y = df.loc[df.column1.notnull(), 'column1']
    y
    
    0      1.0
    1      2.0
    2    345.0
    4      4.0
    5     10.0
    7    100.0
    Name: column1, dtype: float64
    

    选项 2

    作为MSeifert suggested,你可以使用np.isnan

    y = df.loc[~np.isnan(df.column1), 'column1']
    y
    
    0      1.0
    1      2.0
    2    345.0
    4      4.0
    5     10.0
    7    100.0
    Name: column1, dtype: float64
    

    选项 3

    如果只是一列,请致电pd.Series.dropna

    y = df.column1.dropna()
    y
    
    0      1.0
    1      2.0
    2    345.0
    4      4.0
    5     10.0
    7    100.0
    Name: column1, dtype: float64
    

    【讨论】:

    • np.isnan :)
    • 感谢您这么快地为我澄清这一点@COLDSPEED!你摇滚!
    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2017-08-15
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多