【发布时间】:2020-07-29 21:34:42
【问题描述】:
您好,我正在做一个以疾病阶段作为分类变量的分类模型。 这是一个值计数的示例:
- N0 - 720520
- NX - 320115
- N1 - 234552
- N2 - 68529
- N3 - 48976
(注:NX表示未测量)
我正在制作阶段虚拟变量,以便将当前以及之前通过的阶段设置为 1。
我的问题是我为此创建的代码是否可以写得更好。首先,我使用函数设置每一列的值。
def N1(row):
if row['N'] == 'N1':
return 1
if row['N'] == 'N2' :
return 1
if row['N'] == 'N3' :
return 1
else:
return 0
def N2(row):
if row['N'] == 'N2' :
return 1
if row['N'] == 'N3' :
return 1
else:
return 0
def N3(row):
if row['N'] == 'N3' :
return 1
else:
return 0
def NX(row):
if row['N'] == 'NX' :
return 1
else:
return 0
然后使用这些函数:
df['N1'] = df.apply (lambda row: N1(row), axis =1)
df['N2'] = df.apply (lambda row: N2(row), axis =1)
df['N3'] = df.apply (lambda row: N3(row), axis =1)
df['NX'] = df.apply (lambda row: NX(row), axis =1)
最终结果示例:
- NX : 0
- N3:0
- N2 : 1
- N1 : 1
感谢任何有关此过程如何减少代码的输入!谢谢。
【问题讨论】:
-
类似
pd.get_dummies(df['N'])?
标签: python pandas dummy-variable