【问题标题】:How to compare multiple boolean value in a dataframe如何比较数据框中的多个布尔值
【发布时间】:2020-11-23 10:01:18
【问题描述】:

我有一个这样的 df:

         customer_id                       offer_id                   viewed_withintime completed_withintime
0   389bc3fa690240e798340f5a15918d5c    f19421c1d4aa40978ebb69ca19b0e20d    True           True
1   389bc3fa690240e798340f5a15918d5c    f19421c1d4aa40978ebb69ca19b0e20d    True           False
2   389bc3fa690240e798340f5a15918d5c    f19421c1d4aa40978ebb69ca19b0e20d    True           False

我想创建一个名为offer_succussful的新列,如果viewed_withintimecompleted_withintime都是True,那么offer_succussful的值为1,否则为0

这是我的代码:

# label offer_successful to 1 if an offer is viewed and completed within offer_endtime, if not, set it to 0
offer_success_merge['offer_successful'] = (offer_success_merge['completed_withintime'] == True) and (offer_success_merge['viewed_withintime'] == True)

这会返回错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

谁能帮我看看,不知道如何修改这段代码...提前谢谢。

【问题讨论】:

    标签: python pandas boolean series


    【解决方案1】:

    可以使用numpy模块解决问题:

    import numpy as np
    offer_success_merge['offer_successful'] = np.logical_and((offer_success_merge['completed_withintime'] == True), (offer_success_merge['viewed_withintime'] == True))
    

    【讨论】:

      【解决方案2】:

      你也可以使用:

      df['offer_successful'] = (df['viewed_withintime']== True) & (df['completed_withintime']== True)
      

      【讨论】:

        猜你喜欢
        • 2013-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        相关资源
        最近更新 更多