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

如何在Pandas DataFrame中添加基于max()函数判断结果的新列?

问题解决方法

首先纠正你代码里的两个基础问题:

  1. 导入numpy时拼写错误:import bumpy as np 应该改成 import numpy as np
  2. 你的np.where语法错误,且用Python内置max()处理多列Series的方式不对——max()会尝试判断整个Series的真假,这就是触发ValueError的原因,Pandas无法解析这种模糊的布尔判断。

正确实现方式

要实现需求,核心是先计算每行B、C、D三列的最大值,再和A列逐行比较。这里提供两种简洁的写法:

方法1:使用np.where

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0,100,size=(5, 4)), columns=list('ABCD'))
# 按行计算B/C/D的最大值,再和A列比较
df['E'] = np.where(df['A'] > df[['B', 'C', 'D']].max(axis=1), 1, 0)

方法2:布尔值转整数

利用Pandas中布尔值True等价于1、False等价于0的特性,直接转换类型:

df['E'] = (df['A'] > df[['B', 'C', 'D']].max(axis=1)).astype(int)

关键说明

df[['B', 'C', 'D']].max(axis=1) 中的axis=1表示按行计算最大值,返回一个和A列长度一致的Series,这样和A列逐行比较时,就能得到每行对应的布尔判断结果,再转换成你需要的1/0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 17:24:16