如何在Pandas DataFrame满足指定条件时更新Column5列数值?
问题描述
有如下Pandas DataFrame:
Column1 Column2 Column3 Column4 Column5 Column6 0 aaa abb jnhs 01/01/2020 40 TEST 1 aba vvv jnjh 01/01/2020 34 TEST
需要实现:当Column6等于"TEST"时,将该行Column5的数值加1,最终返回完整DataFrame,仅更新符合条件的单元格。期望结果:
Column1 Column2 Column3 Column4 Column5 Column6 0 aaa abb jnhs 01/01/2020 41 TEST 1 aba vvv jnjh 01/01/2020 35 TEST
尝试过的代码:
df['Column5'] = np.where(df['Colum6'] == "TEST", +1, "NA")
但这段代码会把Column5的值直接替换为1,而非在原有数值上加1。
解决方法
方法1:修正np.where写法
你的代码问题有两个:一是未引用原Column5值做计算,二是列名拼写错误(Colum6应为Column6)。正确写法需在满足条件时取原数值加1,不满足时保留原数值:
import numpy as np import pandas as pd # 针对符合条件的行更新Column5,其余行保留原值 df['Column5'] = np.where(df['Column6'] == "TEST", df['Column5'] + 1, df['Column5'])
方法2:使用df.loc直接定位更新(推荐)
这种方式直接定位满足条件的行和目标列,执行加1操作,可读性更高且更高效:
# 仅对Column6为TEST的行,将Column5加1 df.loc[df['Column6'] == "TEST", 'Column5'] += 1
该方法只会修改符合条件的单元格,其余单元格保持原样,是处理这类条件更新的常用最优方案。
内容的提问来源于stack exchange,提问作者11l
相关产品推荐
相关产品推荐

