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

Pandas链式调用assign新增列报Series真值模糊错误如何解决

错误原因

报错的核心原因是assign方法传入的lambda函数接收的参数是聚合后的完整DataFrame,此时x.Business_segment_item是Series类型,Python原生if条件无法直接对整个Series做布尔判断,因此抛出歧义错误。
你之前使用apply(axis=1)的写法是逐行遍历处理,每次拿到的是单行数据的单个值,因此不会报错,但逐行操作性能较差,也不需要额外创建临时DataFrame。

方法链实现方案

直接使用向量化条件判断即可在方法链中完成需求,不需要拆分流程也不需要创建临时表,性能比逐行apply更高。

方案1:使用numpy.where(写法更直观)

import numpy as np

(omc_e.query('GL_account == "740190" and Posting_date > "2021-06-30"')
    .groupby(['Business_segment_item'], as_index=False)
    ['Amount_DKK']
    .sum()
    .assign(Depreciation = lambda x: np.where(x.Business_segment_item == "", 0, x.Amount_DKK))
)

方案2:使用Pandas原生where方法(无需额外导入依赖)

(omc_e.query('GL_account == "740190" and Posting_date > "2021-06-30"')
    .groupby(['Business_segment_item'], as_index=False)
    ['Amount_DKK']
    .sum()
    .assign(Depreciation = lambda x: x.Amount_DKK.where(x.Business_segment_item != "", 0))
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:07