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

如何在pandas DataFrame中新增列取指定列与固定值的最小值

报错原因

Python 内置的min()函数仅支持对标量值做大小比较,你传入了Pandas Series(df["A"])和标量X两个参数时,函数无法直接对整个Series数组做布尔判断,因此触发真值歧义的报错。

正确实现方式

推荐使用性能更高的向量化操作实现逐行比较,常用两种写法:

写法1:使用numpy.minimum逐元素比较

np.minimum会自动对输入的数组/标量做广播,逐元素返回较小值:

import numpy as np
import pandas as pd

data = {
        'A':[0,0,1,1,1,1,1,1,1],
        'B':[0,0,1,1,0,1,4,1,2],
        'C':[0,10,130,1,0,1,4,1,12]
       }
X=5
df=pd.DataFrame(data)
df["D"] = np.minimum(df["A"], X)
print(df)

写法2:使用Pandas自带的clip裁剪方法

通过指定上限参数upper,可以直接把A列的最大值限制为X,效果等价于逐行取和X的最小值:

df["D"] = df["A"].clip(upper=X)

如果数据量很小,也可以用逐行apply的写法,性能低于上述两种向量化方案:

df["D"] = df["A"].apply(lambda x: min(x, X))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:54:03