【问题标题】:Python - how to convert 1/0 to yes/no (in pandas.DataFrame)? [duplicate]Python - 如何将 1/0 转换为是/否(在 pandas.DataFrame 中)? [复制]
【发布时间】:2018-10-09 15:19:37
【问题描述】:

R 中,如果我想基于另一列 10 创建一个带有 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)。

标签: python r pandas


【解决方案1】:

您可以使用pd.Series.map,它接受字典输入:

import pandas as pd

df = pd.DataFrame({'alpha': [50, 51, 52], 'beta': [1,0,1]})

df['gamma'] = df['beta'].map({True: 'yes', False: 'no'})

【讨论】:

  • 我认为 map 不适用于数据框。
猜你喜欢
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2016-02-15
  • 2019-01-11
  • 2017-12-22
  • 2014-01-17
相关资源
最近更新 更多