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

使用相等条件替换DataFrame值:Name1与Name2相等时Marks2置0

解决方案

先处理数据里的'Nan'字符串(转换为Pandas标准缺失值),再通过布尔索引定位目标行完成替换,具体实现如下:

完整代码示例

import pandas as pd
import numpy as np

# 原始数据
df1 = pd.DataFrame({'Name1':['A','B','D','B','B','C','C','C','E','E','E'],
                    'Name2':['A','B','D','C','D','D','A','B','A','B','C'],'Marks2':[30,40,6,50, 88,'Nan',140,9,'Nan',65,70]})

# 将字符串'Nan'替换为标准缺失值NaN
df1['Marks2'] = df1['Marks2'].replace('Nan', np.nan)

# 定位Name1与Name2相等的行,把对应Marks2值设为0
df1.loc[df1['Name1'] == df1['Name2'], 'Marks2'] = 0

print(df1)

代码说明

  • 处理字符串缺失值:原始数据中的'Nan'是字符串类型,无法直接参与数值操作,用replace('Nan', np.nan)转换为Pandas可识别的缺失值,保证后续逻辑正常运行。
  • 布尔索引定位:df1['Name1'] == df1['Name2']生成布尔序列,标记每行是否满足两列取值相等的条件;结合loc可以精准定位目标行和列,完成赋值操作。

执行结果

Name1 Name2  Marks2
0      A     A     0.0
1      B     B     0.0
2      D     D     0.0
3      B     C    50.0
4      B     D    88.0
5      C     D     NaN
6      C     A   140.0
7      C     B     9.0
8      E     A     NaN
9      E     B    65.0
10     E     C    70.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:35:22