在熊猫DataFrame中按位不为真(包括NaN)

时间:2018-07-31 08:02:31

标签: python pandas

我有一个看起来像这样的数据框:

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会导致TypeError

如何实现?

1 个答案:

答案 0 :(得分:1)

我认为需要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