gpt4 book ai didi

python - pandas python 中的 COUNTIF 在具有多个条件的多列上

转载 作者:太空狗 更新时间:2023-10-29 21:31:36 27 4
gpt4 key购买 nike

我有一个数据集,我试图在其中确定每个人的风险因素数量。所以我有以下数据:

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 的 pandas。我希望我能提供我已经尝试过的例子,但坦率地说,我什至不知道从哪里开始。我看了this question ,但它并没有真正解决如何使用来自多个列的不同条件将其应用于整个新列。有什么建议吗?

最佳答案

我会按照以下方式进行。

  1. 对于每一列,使用该列的条件创建一个新的 bool 系列
  2. 按行添加这些系列

(请注意,如果您的吸烟者和糖尿病列已经是 bool 值(真/假)而不是字符串,这会更简单。)

它可能看起来像这样:

df = pd.DataFrame({'Age': [30,45,27,18,55],
'Smoker':['Y','N','N','Y','Y'],
'Diabetes': ['N','N','Y','Y','Y']})

Age Diabetes Smoker
0 30 N Y
1 45 N N
2 27 Y N
3 18 Y Y
4 55 Y Y

#Step 1
risk1 = df.Age > 45
risk2 = df.Smoker == "Y"
risk3 = df.Diabetes == "Y"
risk_df = pd.concat([risk1,risk2,risk3],axis=1)

Age Smoker Diabetes
0 False True False
1 False False False
2 False False True
3 False True True
4 True True True

df['Risk_Factors'] = risk_df.sum(axis=1)

Age Diabetes Smoker Risk_Factors
0 30 N Y 1
1 45 N N 0
2 27 Y N 1
3 18 Y Y 2
4 55 Y Y 3

关于python - pandas python 中的 COUNTIF 在具有多个条件的多列上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24810526/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com