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

Python中基于整数创建二元分类新列及报错解决

解决Pandas中ValueError: The truth value of a Series is ambiguous的问题

你遇到的错误是因为直接用if判断整列的布尔结果导致的——fourthcycle_df["Size1"] <= 1001返回的是一个布尔Series(每一行对应一个True/False),Pandas无法确定你要判断"所有行满足"还是"任意行满足",所以抛出歧义错误。

以下是几种可行的解决方法:

方法1:使用numpy.where(推荐,矢量化效率高)

这是处理这种条件赋值最简洁的方式,直接对整列进行矢量化操作:

import numpy as np
fourthcycle_df["NewSize"] = np.where(fourthcycle_df["Size1"] <= 1001, "1-1001", "1001+")

方法2:使用Pandas的loc索引赋值

先初始化新列,再给符合条件的行批量赋值:

# 先给所有行默认赋值"1001+"
fourthcycle_df["NewSize"] = "1001+"
# 筛选出Size1<=1001的行,修改NewSize的值
fourthcycle_df.loc[fourthcycle_df["Size1"] <= 1001, "NewSize"] = "1-1001"

方法3:使用apply方法(适合小数据集)

通过lambda函数对每个元素单独判断,不过效率低于前两种矢量化方法:

fourthcycle_df["NewSize"] = fourthcycle_df["Size1"].apply(lambda x: "1-1001" if x <= 1001 else "1001+")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:51:12