繁体   English   中英

从两个虚拟变量创建分类变量

[英]Creating a categorical variable from two dummy variables

我有以下数据;

{'ID': {0: 5531.0, 1: 2658.0, 2: 5365.0, 3: 4468.0, 4: 3142.0},
 'FEMALE': {0: 1.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 1.0},
 'MALE': {0: 0.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 0.0},
 'AGE': {0: 45.0, 1: 40.0, 2: 38.0, 3: 43.0, 4: 38.0},
 'S': {0: 12.0, 1: 12.0, 2: 15.0, 3: 13.0, 4: 18.0}}

其中 MALE 是一个虚拟变量,如果个体是男性,则为 1,否则为 0。 女性也一样。
我想创建一个新变量 Gender,它是分类变量。 如果 MALE==1 那么 Gender = Male,如果 FEMALE==1 那么 Gender = Female。 目的是允许明确的双向散射 plot 按性别分开。 我目前可以做到这一点,但传说很难理解。

我尝试了以下;

import numpy as np
import pandas as pd
    
stata_data_P1  = pd.DataFrame({'ID': {0: 5531.0, 1: 2658.0, 2: 5365.0, 3: 4468.0, 4: 3142.0}, 'FEMALE': {0: 1.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 1.0}, 'MALE': {0: 0.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 0.0}, 'AGE': {0: 45.0, 1: 40.0, 2: 38.0, 3: 43.0, 4: 38.0}, 'S': {0: 12.0, 1: 12.0, 2: 15.0, 3: 13.0, 4: 18.0}})

stata_data_P1['Gender'] = np.where(stata_data_P1['MALE'] == '1', 'Female', 'Male')

stata_data_P1.head()

但是从 stata_data_P1.head() 我们可以看到它似乎并没有接受我对 true 和 false 值的命令。

任何帮助将不胜感激。

首先使用assign方法创建新列,然后仅在 MALE 和 FEMALE 列中使用idxmax以返回每行中最大值的索引。

代码:

stata_data_P1.assign(GENDER=lambda df_: df_.loc[:, ["MALE", "FEMALE"]].idxmax(axis=1))

文档:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM