如何在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会变为:
| foo | bar |
|---|---|
| 97 | ABC |
| 53 | DEF |
| 21 | ABC |
| 34 | FGH |
内容的提问来源于stack exchange,提问作者Paul Reiners
相关产品推荐
相关产品推荐

