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

如何在Pandas中根据列条件对指定列执行减常数操作?

Pandas:当bar列值为特定值时更新foo列

首先创建示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'foo': [98, 53, 22, 34],
    'bar': ['ABC', 'DEF', 'ABC', 'FGH']
})

方法1:使用loc直接更新(推荐,效率最高)

通过布尔掩码定位目标行,直接修改foo列的值:

df.loc[df['bar'] == 'ABC', 'foo'] -= 1

loc是Pandas中高效定位数据的方式,适合处理大规模数据集,直接在原DataFrame上修改。

方法2:使用numpy.where生成新列

如果需要生成新列或避免直接修改原数据,可以用numpy.where:

import numpy as np

df['foo'] = np.where(df['bar'] == 'ABC', df['foo'] - 1, df['foo'])

该方法会根据条件生成新的数值数组,赋值给foo列,逻辑清晰。

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

逐行处理数据,代码直观但效率较低,不推荐大数据场景:

df['foo'] = df.apply(lambda row: row['foo'] - 1 if row['bar'] == 'ABC' else row['foo'], axis=1)

最终结果

执行以上任意方法后,DataFrame会变为:

foobar
97ABC
53DEF
21ABC
34FGH

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 13:57:21