如何使用 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 计算跨多列的行中的值?的主要内容,如果未能解决你的问题,请参考以下文章