代码之家  ›  专栏  ›  技术社区  ›  ytu

pandas数据帧中的位不正确(包括NaN)

  •  1
  • ytu  · 技术社区  · 8 年前

    我有一个数据框,看起来像:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({"id": range(5), "is_bar": [np.nan, np.nan, False, True, False], "is_foo": [True, False, True, True, False]})
    

    现在我要一排排 df foo在哪里,但没有bar或bar丢失。换句话说,这是期望的结果:

       id is_bar  is_foo
    0   0    NaN    True
    2   2  False    True
    

    我早料到了 df.loc[df["is_foo"] & ~df["is_bar"]] 去工作,但显然 np.nan s导致 TypeError .

    如何实现?

    1 回复  |  直到 8 年前
        1
  •  1
  •   jezrael    8 年前

    我想需要 fillna :

    df = df.loc[df["is_foo"] & ~df["is_bar"].fillna(False)]
    print (df)
       id is_bar  is_foo
    0   0    NaN    True
    2   2  False    True