我有一个看起来像这样的数据框:
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
。
如何实现?
答案 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