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

如何仅在满足指定条件时修改Pandas DataFrame的Val列值?

最优实现方法

可以利用 pandas 的布尔索引结合矢量化操作来高效实现需求,这种方法避免了循环遍历,性能更优,代码也更简洁:

步骤1:构造原始 DataFrame

import pandas as pd

data = {
    'A': [1, 5, 2, 4],
    'Cond': [True, False, False, False],
    'Val': [0.8, 0.8, 0.6, 0.5]
}
df = pd.DataFrame(data)

步骤2:应用条件修改

# 定义筛选条件:Cond为False 且 Val>0.55
mask = (df['Cond'] == False) & (df['Val'] > 0.55)

# 对满足条件的行,将Val调整为比原数小的最近0.1倍数(匹配你的示例结果)
df.loc[mask, 'Val'] = (df.loc[mask, 'Val'] // 0.1 - 1) * 0.1

结果验证

执行后得到的 DataFrame 如下:

A   Cond  Val
0  1   True  0.8
1  5  False  0.7
2  2  False  0.5
3  4  False  0.5

方法优势

  • 矢量化操作:pandas 的底层优化让这种批量操作比逐行循环快几个数量级,尤其适合大尺寸的 DataFrame。
  • 可读性强:通过布尔索引(mask)清晰圈定需要修改的行,逻辑一目了然,维护成本低。

如果你的“截断”是指常规的保留一位小数截断(例如 0.85→0.8),只需把修改逻辑替换为:

df.loc[mask, 'Val'] = (df.loc[mask, 'Val'] * 10).astype(int) / 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:25:18