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

Pandas DataFrame中Series真值歧义错误及数值替换问题求助

问题解决方案

错误原因

你的代码中逻辑运算符&的优先级高于比较运算符,导致Pandas无法正确解析布尔条件组合,进而引发"The truth value of a Series is ambiguous"错误。必须为每个独立的布尔判断条件单独添加括号。

修正后的完整代码

假设你需要实现:

  • 当remaining_lease为1000且lease_commence_date≥2000时,替换为99-(year-sales.lease_commence_date)
  • 当remaining_lease为1000且lease_commence_date<2000时,替换为指定的另一数值(示例用100-(year-sales.lease_commence_date),可自行修改)
import datetime

# 获取当前年份
year = datetime.datetime.now().year

# 处理租赁起始年份≥2000的情况
sales.loc[(sales.remaining_lease == 1000) & (sales.lease_commence_date >= 2000), 'remaining_lease'] = 99 - (year - sales.lease_commence_date)

# 处理租赁起始年份<2000的情况
sales.loc[(sales.remaining_lease == 1000) & (sales.lease_commence_date < 2000), 'remaining_lease'] = 100 - (year - sales.lease_commence_date)  # 替换为你需要的目标数值

额外说明

如果lease_commence_date是日期类型而非纯年份数值,需要先提取年份再做判断,代码调整为:

# 提取年份后处理≥2000的情况
sales.loc[(sales.remaining_lease == 1000) & (sales.lease_commence_date.dt.year >= 2000), 'remaining_lease'] = 99 - (year - sales.lease_commence_date.dt.year)

# 提取年份后处理<2000的情况
sales.loc[(sales.remaining_lease == 1000) & (sales.lease_commence_date.dt.year < 2000), 'remaining_lease'] = 100 - (year - sales.lease_commence_date.dt.year)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:16:07