python - Pandas 列内的映射值

标签 python pandas dictionary data-science

我使用下面的代码将 S 列中的 2 个值映射到 0,但没有成功。关于如何解决这个问题的任何建议? N.B:我想在 map 内部实现一个外部函数。

 df = pd.DataFrame({
   'Age': [30,40,50,60,70,80],
   'Sex': ['F','M','M','F','M','F'],
   'S'  : [1,1,2,2,1,2]
 })
 def app(value):
     for n in df['S']:
         if n == 1:
             return 1
         if n == 2:
             return 0
 df["S"] = df.S.map(app)

最佳答案

使用 eq 创建一个 bool 系列并使用 astype 将该 bool 系列转换为 int:

df['S'] = df['S'].eq(1).astype(int)

df['S'] = (df['S'] == 1).astype(int)

输出:

   Age Sex  S
0   30   F  1
1   40   M  1
2   50   M  0
3   60   F  0
4   70   M  1
5   80   F  0

关于python - Pandas 列内的映射值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51527264/

相关文章:

python - 三个列表压缩到字典列表中

python - 迭代 python 字典的一个索引

python - 将 lxml 库添加到项目

python - "dict object is not callable"尝试从 request.json 获取值时

python - 在 python 中检查堆栈中的局部变量

python - 当 window = 1 时,pandas 滚动平均值可能存在错误

python - 如何自动构建多个列表

python - 为什么 pandas isnull() 有效但 ==None 无效?

python - 在 Pandas 中选择多索引列的子级别

vb.net - 如何将值插入(字符串,列表(字符串))字典的列表部分?