我有一个DataFrame
名为df
,列col
包含值True
,False
和"N/A"
(类型分别为bool
,bool
和str
)。我想只选择包含True
的行。
df[df.col==True]
工作,但生成警告PEP 8: comparison to True should be 'if cond is True:' or 'if cond:'
。
有符合PEP8标准的方法吗?
之前曾问过类似的问题,例如pandas: Do I have to deviate from style conventions (PEP 8)?,但它们都描述了一个简单的例子,你只有一列True
和False
值。在那种情况下,你可以只做df[df.col]
。
在你的情况下,虽然你不能这样做,因为它会给出一个错误,但你有其他选择:
pd.Series.eq
:
>>> df = pd.DataFrame({'col': [True, False, 'N/A']})
>>> df[df.col.eq(True)]
col
0 True
"N/A"
,然后比较左边的True
。订单事宜:
>>> df[(df.col != 'N/A') & df.col]
col
0 True
"N/A"
替换np.nan
并使用pd.Series.notnull
或pd.Series.notna
:
>>> df = df.replace('N/A', np.nan)
>>> df[df.col.notnull() & df.col]
col
0 True