如何在Pandas DataFrame中替换A列等于B列的行的C列值
解决方法:替换符合条件行的指定列值
你已经成功筛选出了目标行,接下来只需要用Pandas的.loc索引器来精准定位并修改即可,这也是最稳妥的方式(避免触发SettingWithCopyWarning警告):
import pandas as pd # 你的原始DataFrame data1 = pd.DataFrame(data=[[1, 10, 100], [2,2,200],[3,3,300], [4,40,400]], columns=['A', 'B', 'C']) # 核心代码:定位符合条件的行和C列,赋值为-1 data1.loc[data1['A'] == data1['B'], 'C'] = -1 # 查看结果 print(data1)
运行后就能得到你想要的输出:
A B C 0 1 10 100 1 2 2 -1 2 3 3 -1 3 4 40 400
另一种可选方法:使用numpy.where
如果你偏好生成新列的方式,也可以用numpy.where来实现,逻辑是“满足条件则赋值-1,否则保留原C列值”:
import numpy as np data1['C'] = np.where(data1['A'] == data1['B'], -1, data1['C'])
两种方法都能达到你的需求,.loc更适合原地修改DataFrame,而numpy.where在需要复杂条件判断时灵活性更强。
内容的提问来源于stack exchange,提问作者Mikhail_Sam
相关产品推荐
相关产品推荐

