【问题标题】:Check if a pandas Series has at least one item greater than a value检查熊猫系列是否至少有一项大于值
【发布时间】:2016-03-12 22:56:04
【问题描述】:

以下代码将打印 True,因为 Series 至少包含一个大于 1 的元素。但是,它似乎有点不符合 Python 风格。如果 Series 包含 > 特定值的数字,是否有更 Pythonic 的方式返回 True?

import pandas as pd

s = pd.Series([0.5, 2])
print True in (s > 1)

是的

编辑: 上述答案不仅不是 Pythonic,有时由于某种原因会返回不正确的结果。例如:

s = pd.Series([0.5])
print True in (s < 1)

错误

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用any 方法检查该条件是否为True 至少对于一个值:

    In [36]: (s > 1).any()
    Out[36]: True
    

    【讨论】:

    • 如何将该操作扩展到一组列,以便在所有值中至少有一个大于零的值时返回?
    • @FedericoGentile 你的意思是像any(axis=1).any()这样的东西吗?首先,将检查子集中的所有行,并生成 Pandas 系列。其次,您将检查系列是否有任何 True 值。如果没有,您可以在评论中提供一个示例,或者最好提出一个包含所有详细信息的新问题。
    • 我的意思是,如果我有一个包含 3 列(A、B、C)的数据框,并且我想检查 A 列和 B 列中是否至少有一个大于 0 的值...一种可能解决方案是这样做:(df.A > 1).any() 和 (df.B > 1).any()。有没有更好更优雅的方法呢?
    • @FedericoGentile 你可以使用类似(df[['A', 'B', 'C']] &gt; 1).any(axis=1)
    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 1970-01-01
    • 2014-08-30
    • 2021-07-12
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2022-10-16
    相关资源
    最近更新 更多