Pandas vs.PEP8:在具有混合类型的系列中选择True值

时间:2019-04-14 13:10:12

标签: python pandas pep8

我有一个名为DataFrame的{​​{1}},其列df包含值colTrueFalse(类型为{{1 }},"N/A"bool)。我只想选择包含bool的行。

str有效,但生成警告True

是否有符合PEP8的方法?

1 个答案:

答案 0 :(得分:1)

之前曾提出过类似的问题,例如pandas: Do I have to deviate from style conventions (PEP 8)?,但是它们都描述了一个简单的情况,其中您只有一列TrueFalse值。在这种情况下,您只需做df[df.col]

在您的情况下,您不能执行此操作,因为它会产生错误,但是您还有其他选择:

  1. 使用pd.Series.eq

    >>> df = pd.DataFrame({'col': [True, False, 'N/A']})
    >>> df[df.col.eq(True)]
        col
    0  True
    
  2. 首先检查"N/A",然后比较True剩下的内容。订单事项:

    >>> df[(df.col != 'N/A') & df.col]
        col
    0  True
    
  3. "N/A"代替np.nan并使用pd.Series.notnullpd.Series.notna

    >>> df = df.replace('N/A', np.nan)
    >>> df[df.col.notnull() & df.col]
        col
    0  True