Panda DataFrame中的Bitwise not True(包括NaN)



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

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

如何实现?

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

最新更新