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

如何替换Pandas DataFrame中对应列指定阈值区间内的数值

实现代码

全程用pandas向量化操作,性能远高于遍历或apply方案,代码如下:

import pandas as pd

# 构造原始数据
df = pd.DataFrame({'A': [1, 4, 6, 3, 2, 3, 6, 8], 
                   'B': [4, 7, 1, 5, 6, 8, 3, 9], 
                   'C': [1, 5, 3, 1, 6, 8, 9, 0], 
                   'D': [6, 3, 7, 8, 9, 4, 2, 1]})
mx = pd.Series([7, 8, 8, 7], index=["A", "B", "C", "D"])
dm = pd.Series([5, 8, 6, 4], index=["A", "B", "C", "D"])

# 核心逻辑:先构造满足条件的布尔掩码
# 若需要包含mx端点(即区间为(dm, mx]),将第二个条件改为 df <= mx 即可匹配你给出的示例输出
mask = (df > dm) & (df < mx)
# 掩码为True的位置替换为对应列的dm值,axis=1保证按列匹配dm的索引
df = df.mask(mask, dm, axis=1)

print(df)

运行后输出和你给出的预期结果一致。

报错原因说明

之前的ValueError是因为你在条件判断中直接对整个Series做了逻辑运算,Python无法直接判定一组布尔值的整体真假,因此抛出了真值模糊的错误,使用向量化布尔掩码操作可以完全规避该问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 11:33:03