如何统计DataFrame每行中TRUE值的数量?现有代码未达预期
问题解决:统计DataFrame每行TRUE值数量并添加count列
现有DataFrame如下:
a | b | c | d ------------------------------- TRUE FALSE TRUE TRUE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE TRUE FALSE
需求是统计每行中TRUE值的数量,并新增count列,预期结果如下:
a | b | c | d | count --------------------------------------- TRUE FALSE TRUE TRUE 3 FALSE FALSE FALSE TRUE 1 TRUE TRUE TRUE TRUE 4 TRUE FALSE TRUE FALSE 2
你尝试的df.groupby(df.columns.tolist(),as_index=False).size()是用来按整行内容分组,统计重复行的出现次数,和当前需求完全不匹配,所以得不到想要的结果。
正确实现代码
根据数据类型分两种情况处理:
- 如果
TRUE/FALSE是布尔类型(Python原生的True/False),直接按行求和即可:
df['count'] = df.sum(axis=1)
- 如果
TRUE/FALSE是字符串类型,先判断单元格值等于"TRUE",再按行求和:
df['count'] = df.eq('TRUE').sum(axis=1)
原理很直观:sum(axis=1)指定按行计算,布尔值里True会被视为1,False视为0,求和结果正好是每行TRUE的数量。
内容的提问来源于stack exchange,提问作者Cosmo
相关产品推荐
相关产品推荐

