You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中对比DataFrame日期生成新列时np.where报错如何解决?

错误原因

报错是运算符优先级导致的:Python 中&按位与运算符的优先级高于==比较运算符,你原有代码的执行顺序会先计算'FALSE'& (final['Expiration_date'] >= final['current_date']),强制字符串和布尔数组做逻辑运算,因此触发类型错误。

正确实现代码

首先确保已导入numpy依赖:

import numpy as np

修改后的代码如下:

final['XYZ'] = np.where(
    (final['is_trial_period'] == 'FALSE') & (final['Expiration_date'] >= final['current_date']), 
    'Active Subscription',
    'Expired Subscription'
)

核心改动是给两个独立判断条件都加上括号,确保先完成两个条件的判断,再做逻辑与运算,完全匹配你的规则:

  • 同时满足is_trial_period为FALSE、Expiration_date大于等于current_date,赋值为Active Subscription
  • 其余所有情况均赋值为Expired Subscription

小提示:如果后续你将is_trial_period字段转换为布尔类型,只需把对应条件改为(~final['is_trial_period'])即可,不需要再判断字符串。

结果验证

你提供的样例数据中Expiration_date为2013-12-12,远早于current_date的2021-10-05,第二个判断条件不满足,最终XYZ列的输出和你预期的Expired Subscription完全一致。


内容的提问来源于stack exchange,提问作者Saideep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:09:02