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

如何在Python的pandas.DataFrame中将1/0转换为Yes/No?附R实现示例

解决Python中0/1列转YES/NO新列的问题

Hey there! Glad to help you translate that R logic over to Python with pandas. Here are a few straightforward ways to achieve the same result you got in R:

方法1:使用map进行键值映射

这是最直观的方式,直接把beta列的0和1映射成对应的'NO'和'YES':

import pandas as pd
df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})
# 用字典定义映射关系
df['gamma'] = df['beta'].map({0: 'NO', 1: 'YES'})

方法2:使用numpy.where做条件判断

如果需要更灵活的条件逻辑(比如后续要扩展判断规则),这种方法会更合适:

import pandas as pd
import numpy as np
df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})
# 条件:beta等于1时返回YES,否则返回NO
df['gamma'] = np.where(df['beta'] == 1, 'YES', 'NO')

方法3:转成分类变量(和R的factor逻辑一致)

如果你想复刻R中factor的行为(比如节省内存、保留分类属性),可以把列转成pandas的分类类型:

import pandas as pd
df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})
# 先把beta转成分类类型,再重命名分类标签
df['gamma'] = df['beta'].astype('category')
df['gamma'] = df['gamma'].cat.rename_categories({0: 'NO', 1: 'YES'})

运行结果

不管用哪种方法,最终的DataFrame都会是这样:

alpha  beta gamma
0     50     1   YES
1     51     0    NO
2     52     1   YES

每种方法各有优势:

  • map适合简单固定的键值映射,代码简洁
  • numpy.where适合复杂的多条件判断场景
  • 分类变量的方法和R的factor逻辑最贴近,适合处理大量重复分类值的数据集,能有效节省内存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:28:14