【发布时间】: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()”有什么区别?
标签: pandas group-by count multiple-columns rows