首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种方法,在一个检查多个命名列的dataframe中计数所有至少包含一个“1”的行?

是否有一种方法,在一个检查多个命名列的dataframe中计数所有至少包含一个“1”的行?
EN

Stack Overflow用户
提问于 2022-07-18 11:05:53
回答 1查看 41关注 0票数 2

我有一个包含医疗保险受益人的数据集。问题是:“在自变量阿尔茨海默病、关节炎、癌症、慢性阻塞性肺疾病、抑郁症、糖尿病、heart.failure、ihd、肾脏、骨质疏松和中风等自变量中,有多少比例的患者至少患有一种慢性疾病?”

我试着创建一个子集并使用isnull() & any(),但是我无法得到一个合适的解决方案。也尝试过df.loc,但它只允许我命名一列。

我是附加数据集,以更好地理解!

https://drive.google.com/file/d/1R--YEsBCDHMXjqNzAumT2zzUAYvM1bWA/view?usp=sharing

谢谢!!

我的尝试是:

代码语言:javascript
复制
claimss.loc[:, ["alzheimers","diabetes","arthritis"] == 1]

(想先尝试3列,一开始就不起作用。)

尝试使用子集:

代码语言:javascript
复制
filtered_df = df.loc[raw_df] == 1]

(创建一个子集,其中只有索引和独立变量(疾病)出现,并试图查找空行)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-18 11:13:21

如果只需要筛选某些列名,则使用子集作为筛选列的名称,通过1通过DataFrame.eq进行比较,最后通过DataFrame.any测试至少一个True

代码语言:javascript
复制
claimss[claimss[["alzheimers","diabetes","arthritis"]].eq(1).any(axis=1)]

如果需要百分比,请使用mean和布尔掩码:

代码语言:javascript
复制
out = claimss[["alzheimers","diabetes","arthritis"]].eq(1).any(axis=1).mean()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73021336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档