【问题标题】:How to get only one boolean value when comparing multiple conditions?比较多个条件时如何仅获得一个布尔值?
【发布时间】:2019-07-28 18:23:00
【问题描述】:

我正在使用此代码来比较数据帧之间的多个条件:

    boolean = df1.EmailAddress.isin(df2.Email) & df2.DateTimeCreated.ge(datetime.today() - timedelta(90))

变量输出变成一个序列,选择“False”,如下所示:

0
False
False

但是,当我独立运行这两个条件时,它们会输出到 True,这是我正在寻找的正确答案。为什么两个条件都默认为False?我如何只取回一个结果?例如True

【问题讨论】:

    标签: python-3.x pandas boolean


    【解决方案1】:

    pandas &(and)index 敏感,因为您的第一个条件来自df1(将具有与index 相同的df1),而第二个条件来自df2 将具有相同的@ 987654327@ as df2,这将使答案有线。

    cond1=df1.EmailAddress.isin(df2.Email)
    cond2=df2.DateTimeCreated.ge(datetime.today() - timedelta(90))
    

    修复

    cond1=df1.EmailAddress.isin(df2.Email)
    cond2=df1.DateTimeCreated.ge(datetime.today() - timedelta(90))#change df2 here to df1
    

    【讨论】:

    • 修复有效,但如何在 IF 语句中使用两个不同的条件进行比较?理想情况下,我想要一个对或错
    • 想要这样做:如果 cond1 ==True 和 cond2 ==True:做某事,但得到错误 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all(). 并在 cond1 和 cond2 上重置索引
    • @RustyShackleford 所以你想要吗? cond1.any() & cond2.any() ?或者.all(),这取决于你想做什么
    猜你喜欢
    • 2013-09-12
    • 2019-02-08
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2015-07-08
    • 2011-10-16
    • 2014-09-06
    相关资源
    最近更新 更多