如何在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')
执行任意一种方法后,得到的结果如下:
| Name | Age | Birth City | Gender |
|---|---|---|---|
| Jane | 23 | London | F |
| Melissa | 45 | Paris | X |
| John | 35 | Toronto | X |
| Matt | 64 | Atlanta | M |
内容的提问来源于stack exchange,提问作者four-eyes
相关产品推荐
相关产品推荐

