【问题标题】:Pandas acessing rows with nanPandas 使用 nan 访问行
【发布时间】:2018-12-25 07:17:52
【问题描述】:

我正在研究这样的数据框。

df = pd.DataFrame([[1, np.nan, 2],
               [2,      3,      5],
               [np.nan, 4,      6]],index=['a','b','c'])
df

    0     1     2
a   1.0  NaN    2
b   2.0  3.0    5
c   NaN  4.0    6

当我使用 df.isnull() 时,它的输出为:

        0   1        2
a   False   True    False
b   False   False   False
c   True    False   False

当我使用 df[df.isnull()] 时,为什么它会将所有元素显示为 nan:

df[df.isnull()] 

    0   1   2
a   NaN NaN NaN
b   NaN NaN NaN
c   NaN NaN NaN

有人可以解释为什么会这样吗?

【问题讨论】:

    标签: python pandas dataframe data-science data-analysis


    【解决方案1】:

    这是数据框的掩码,它将所有 False 值掩码为np.nan

    例如

    df[~df.isnull()] 
    Out[342]: 
         0    1  2
    a  1.0  NaN  2
    b  2.0  3.0  5
    c  NaN  4.0  6
    

    df[df==2]
    Out[343]: 
         0   1    2
    a  NaN NaN  2.0
    b  2.0 NaN  NaN
    c  NaN NaN  NaN
    

    由于isnull 将所有np.nan 值返回为True

    掩码后

    df[df.isnull()] 
    Out[344]: 
        0                           1       2
    a NaN(False mask as NaN)       NaN(True) NaN
    b NaN(True)                    NaN       NaN
    c NaN                          NaN       NaN
    

    【讨论】:

    • 那么我怎样才能只选择包含 nan 的行呢?感谢以上回答文。
    • @RaviKd 你可以添加任何df[df.isnull().any(1)]
    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2017-09-25
    • 2017-08-08
    • 1970-01-01
    • 2016-09-28
    • 2016-01-04
    • 1970-01-01
    相关资源
    最近更新 更多