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

如何根据条件为Pandas DataFrame列的数值分配指定值并解决报错

报错原因

你代码里将mask的判断条件和替换值放在同一组圆括号内,生成了两个元组,元组之间不支持|逻辑或运算,因此触发TypeError。

正确实现方案

方案1(最简写法,推荐)

直接对判断条件的布尔结果转整数即可,一行代码完成需求,且自动适配无穷大的场景:

df['B'] = (df['B'].abs() > 15).astype(int)

逻辑说明:

  • 绝对值大于15的数值(包括正负无穷大)会得到布尔值True,转int后为1
  • 绝对值在[-15,15]区间内的数值得到布尔值False,转int后为0

方案2(沿用mask+where的写法修正)

如果需要保持你原来的写法思路,调整mask的参数位置即可:

# mask第一个参数传入判断条件,第二个参数传入满足条件时的替换值
df['B'] = df['B'].mask((df['B'] > 15) | (df['B'] < -15), 1)
df['B'] = df['B'].where(df['B'] == 1, 0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:54:03