【发布时间】:2018-10-09 15:19:37
【问题描述】:
在 R 中,如果我想基于另一列 1 和 0 创建一个带有 YES/NO 的新列,下面的代码可以满足我的目的。
df <- data.frame(alpha = c(50, 51, 52), beta = c(1,0,1))
df$gamma <- factor(df$beta, label = c('no','yes'))
alpha beta gamma
1 50 1 yes
2 51 0 no
3 52 1 yes
但我不确定如何在 Python 中做同样的事情。任何人都可以完成以下代码或建议不同的方法吗?
import pandas as pd
df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})
df['gamma'] = ??????
提前致谢。 (越简单越好)
【问题讨论】:
-
可以说这不是 最简单的 解决方案,但如果您将一组整数映射到字符串,您可以考虑使用分类 dtypes:
df['gamma'] = pd.Categorical.from_codes(df.beta, categories=["no", "yes"])(即更接近我理解的 R 解决方案)- 它应该是快速且内存高效的。 -
建议的副本用于other方向的转换(str -> int,而不是 int -> str)。