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

如何最快替换DataFrame中John行的所有数值为0?

解决方案

原始数据

Name English Maths City
Hdhdn  65    50   Xyz
Hdhdhd 70.6    45   Abc
John   67.4    46   Ydh

需求

将df1中Name为John的行的所有数值型字段值替换为0,期望结果:

Name English Maths City
Hdhdn  65    50   Xyz
Hdhdhd 70.6    45   Abc
John    0    0   Ydh

最快实现方法

使用pandas的矢量化索引操作是效率最高的方案,底层基于C实现,避免Python级别的循环,数据量越大优势越明显:

步骤1:构造DataFrame(未初始化时执行)

import pandas as pd

data = {
    'Name': ['Hdhdn', 'Hdhdhd', 'John'],
    'English': [65, 70.6, 67.4],
    'Maths': [50, 45, 46],
    'City': ['Xyz', 'Abc', 'Ydh']
}
df1 = pd.DataFrame(data)

步骤2:核心替换操作

# 定位Name为John的行,筛选所有数值型列并赋值为0
df1.loc[df1['Name'] == 'John', df1.select_dtypes(include=['number']).columns] = 0

代码说明

  • df1['Name'] == 'John':通过布尔索引精准定位目标行
  • df1.select_dtypes(include=['number']):自动筛选所有数值类型的列(int、float等),无需手动指定列名,通用性强
  • .loc:基于标签的索引,直接对目标区域赋值,是pandas中效率最高的修改方式之一

若已明确数值列名称,也可直接指定列名,效率相当但通用性稍弱:

df1.loc[df1['Name'] == 'John', ['English', 'Maths']] = 0

验证结果

执行后打印df1即可得到期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:52:52