Python中如何对不在指定集合内的变量值进行重编码
Pandas 实现指定集合外值的重编码
假设你用Pandas处理这个数据列,下面是几种高效的实现方式:
1. 构造原始数据
先把给出的数据集转换成Pandas DataFrame:
import pandas as pd df = pd.DataFrame({'a': ['Apple', 'Apple', 'Pear', 'Banana', 'Apple', 'Orange']})
2. 核心处理逻辑
指定需要保留的取值集合 {'Apple', 'Orange'},将不在集合内的值替换为'x',以下是三种常用方法:
方法一:使用where()方法
where()会保留满足条件的原值,不满足条件的替换为指定值:
keep_set = {'Apple', 'Orange'} df['a'] = df['a'].where(df['a'].isin(keep_set), 'x')
方法二:使用mask()方法
mask()与where()逻辑相反,满足条件时替换为指定值,这里用~取反筛选不在集合内的元素:
keep_set = {'Apple', 'Orange'} df['a'] = df['a'].mask(~df['a'].isin(keep_set), 'x')
方法三:使用replace()方法
先生成「非保留值→'x'」的映射字典,再批量替换:
keep_set = {'Apple', 'Orange'} replace_map = {val: 'x' for val in df['a'].unique() if val not in keep_set} df['a'] = df['a'].replace(replace_map)
处理后结果
执行任意一种方法后,得到的DataFrame如下:
a 0 Apple 1 Apple 2 x 3 x 4 Apple 5 Orange
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

