首页 > 解决方案 > 如何比较数据框中的多个布尔值

问题描述

我有一个这样的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_withintime都是completed_withintimeTrue则值为offer_succussfulis 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().

有人可以看看我,不知道如何修改这段代码......提前谢谢。

标签: pythonpandasbooleanseries

解决方案


您可以使用 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))

推荐阅读