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

根据指定列字符串计算DataFrame列值时触发ValueError的原因?

报错原因解析
  • 遍历对象错误:for names in se1 遍历的是DataFrame的列名,不是你需要的行数据,整个循环逻辑从一开始就跑偏了。
  • 布尔Series直接用于if判断:se1['SE Assigned'] == 'Anthony' 会生成一个布尔类型的Series(每一行对应一个True/False),但if语句只能接收单个布尔值,没法判断整个Series的“真值”,所以触发ValueError。
正确实现方式

推荐:Pandas向量化操作(效率更高)

Pandas的核心是向量化运算,完全不需要逐行循环,直接用布尔索引定位目标行修改即可:

# 注意示例里的列名是Net_Amount,要和你的DataFrame列名一致
se1.loc[se1['SE Assigned'] == 'Anthony', 'Net_Amount'] *= 0.0666

这段代码会直接筛选出SE Assigned为Anthony的所有行,把对应Net_Amount列的值乘以0.0666并赋值回去。

可选:逐行循环(仅作理解用,不推荐)

如果一定要逐行处理,用iterrows()遍历行:

for idx, row in se1.iterrows():
    if row['SE Assigned'] == 'Anthony':
        se1.loc[idx, 'Net_Amount'] = row['Net_Amount'] * 0.0666

iterrows()会返回每行的索引和行数据,这样就能对每行单独判断,再通过索引修改对应位置的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:45:31