我有一个数据集,其中我试图确定每个人的危险因素数量。所以我有以下数据:
Person_ID Age Smoker Diabetes
001 30 Y N
002 45 N N
003 27 N Y
004 18 Y Y
005 55 Y Y
每个属性(年龄,吸烟者,糖尿病)都有自己的条件来确定是否是危险因素。因此,如果年龄> = 45,则是一个危险因素。吸烟者和糖尿病为“ Y”是危险因素。我想要添加一列,以根据这些条件总计每个人的风险因素数量。因此数据如下所示:
Person_ID Age Smoker Diabetes Risk_Factors
001 30 Y N 1
002 25 N N 0
003 27 N Y 1
004 18 Y Y 2
005 55 Y Y 3
我有一个样本数据集,我在Excel中鬼混,而我这样做的方式是使用COUNTIF公式,如下所示:
=COUNTIF(B2,">45") + COUNTIF(C2,"=Y") + COUNTIF(D2,"=Y")
但是,我将要使用的实际数据集对于Excel来说太大了,因此我正在为python学习熊猫。我希望我能提供一些例子,但坦率地说,我什至不知道从哪里开始。我看了这个问题,但是它并没有真正解决如何使用来自多个列的不同条件将其应用于整个新列的方法。有什么建议么?
如果您想坚持使用熊猫。您可以使用以下...
isY = lambda x:int(x=='Y')
countRiskFactors = lambda row: isY(row['Smoker']) + isY(row['Diabetes']) + int(row["Age"]>45)
df['Risk_Factors'] = df.apply(countRiskFactors,axis=1)
这个怎么运作
isY-是一个存储的lambda函数,用于检查单元格的值是否为Y,否则返回1 countRiskFactors-汇总风险因素
最后一行使用apply方法,将参数键设置为1,该方法沿DataFrame逐行应用方法-first参数-并返回附加到DataFrame的Series。
打印df的输出
Person_ID Age Smoker Diabetes Risk_Factors
0 1 30 Y N 1
1 2 45 N N 0
2 3 27 N Y 1
3 4 18 Y Y 2
4 5 55 Y Y 3
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句