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

Pandas列值映射:指定值转换为新值,是否用if语句实现?

问题解答

首先,不是只能用if语句,不过用if语句确实可以实现这个转换需求。下面分别给出不同的实现方式:

1. 使用if语句的实现方式

可以通过apply方法结合lambda表达式里的if-elif逻辑逐行处理数据:

import pandas as pd

# 构造原始数据
df = pd.DataFrame({'gender': [1,2,1,1,3,2,1,4,5,1]})

# 用if-elif逻辑完成转换
df['gender'] = df['gender'].apply(lambda x: 1 if x == 1 else 2 if x in [2,5] else 3 if x in [3,4] else x)

print(df)

输出结果符合你的期望:

gender
0       1
1       2
2       1
3       1
4       3
5       2
6       1
7       3
8       2
9       1

2. 更高效的Pandas原生方法(推荐)

当处理大规模数据时,Pandas的向量化操作比逐行的if语句性能更好,推荐使用以下两种方式:

方法一:使用replace

通过定义映射规则批量替换值:

# 定义转换规则
replace_rule = {1:1, 2:2, 5:2, 3:3, 4:3}
df['gender'] = df['gender'].replace(replace_rule)

方法二:使用map

同样基于映射规则完成转换:

# 定义转换规则
map_rule = {1:1, 2:2, 3:3, 4:3, 5:2}
df['gender'] = df['gender'].map(map_rule)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 13:57:07