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

如何在Pandas中基于多条件替换列中的值

问题描述

现有如下DataFrame:

import pandas as pd

df = pd.DataFrame.from_dict(
    {
        'Name': ['Jane', 'Melissa', 'John', 'Matt'],
        'Age': [23, 45, 35, 64],
        'Birth City': ['London', 'Paris', 'Toronto', 'Atlanta'],
        'Gender': ['F', 'F', 'M', 'M']
    }
)

需求:当Name列的值为Melissa或John时,将Gender列对应的值替换为X,该如何实现?


解决方案

方法1:使用loc条件索引(最直观常用)

通过isin()匹配目标姓名,再用loc精准定位要修改的行和列,直接赋值替换:

df.loc[df['Name'].isin(['Melissa', 'John']), 'Gender'] = 'X'

方法2:用numpy.where实现条件赋值

利用numpy.where的三元逻辑,满足条件时替换为X,否则保留原Gender值:

import numpy as np

df['Gender'] = np.where(df['Name'].isin(['Melissa', 'John']), 'X', df['Gender'])

方法3:使用mask方法

mask()会自动将满足条件的位置替换为指定值,其余位置保留原值:

df['Gender'] = df['Gender'].mask(df['Name'].isin(['Melissa', 'John']), 'X')

执行任意一种方法后,得到的结果如下:

NameAgeBirth CityGender
Jane23LondonF
Melissa45ParisX
John35TorontoX
Matt64AtlantaM

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:05:19