热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Pandasvs.PEP8:选择具有混合类型的系列中的真值

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Pandasvs.PEP8:选择具有混合类型的系列中的真值相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Pandas vs. PEP8:选择具有混合类型的系列中的真值相关的知识,希望对你有一定的参考价值。



我有一个DataFrame名为df,列col包含值TrueFalse"N/A"(类型分别为boolboolstr)。我想只选择包含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)?,但它们都描述了一个简单的例子,你只有一列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



推荐阅读
author-avatar
阵风阿斯顿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有