如何使用 Pandas 计算跨多列的行中的值?

Posted

技术标签:

【中文标题】如何使用 Pandas 计算跨多列的行中的值?【英文标题】:How to count values in rows across multiple columns with Pandas? 【发布时间】:2019-06-05 20:29:26 【问题描述】:

我是 Python 新手。我将不胜感激有关此方法的任何建议。

我在 python 中使用 pandas,并且有一个像这样的数据框(csv 文件),但有 195 列和约 300 个人。

Index  IID    Sex    Disease 1   Disease 2  Disease 3

0      001     F     Absent        Absent   Present  
1      002     M     Absent        Absent   Present   
2      003     M     Present       Absent   Present 

我想计算患有每种疾病的人数,这意味着我需要计算 195 列中的值“Present”。然后我想按性别分组计数。我该怎么做?

我能做的最好的事情是:GROUP=df1.loc[:,["SEX","Disease1","Disease2", "Disease3"].groupby('SEX') GROUP.count(),但这只是计算了按性别分组的指定列中的所有条目。我不知道如何做同样的事情,但只计算每行上具有“Present”值的条目,或者至少计算行上每个值的条目数(“Present”、“Absent”、“ Unable_to_Code”)。

【问题讨论】:

试试df[(df.filter(like='Disease')=='Present').all(1)].groupby('Sex')['IID'].size() 如果我有更多数据,我可以验证和验证。 非常感谢您的回复!我得到了这个:“系列([],名称:IID,dtype:int64)”但不知道为什么。 “size()”和“count()”有什么区别? 【参考方案1】:

这是我想出的解决方案:

pd.merge(df['Sex'].to_frame(), df.filter(like='Disease')[df.filter(like='Disease') == 'Present'], left_index=True, right_index=True).groupby('Sex').count()

【讨论】:

非常感谢您!这解决了我头撞墙这么久的问题!!!今晚我终于可以睡觉了!谢谢!

以上是关于如何使用 Pandas 计算跨多列的行中的值?的主要内容,如果未能解决你的问题,请参考以下文章

如何计算熊猫中一行中所有元素的加权和?

如何定位DataGridView中的某行中的某列

如何遍历数据框的行并检查列行中的值是不是为 NaN

ExtJS 3:如何根据行中的值对不同的行定义不同的操作?

如何在 pct_change 计算中对 pandas DataFrame 中的多列进行分组

计算行中的值也在前一行中的行