使用Python进行计数

时间:2018-08-02 18:00:49

标签: python-3.x pandas for-loop count

我正在尝试逐列计算CSV文件中某种类型的值的出现,因此程序将执行的操作是忽略存在0的行,然后计算其余的行。

Program pseudocode -

Count each column
if the value is greater than 0 count
else ignore
continue till the  last row of each column
print Total count

要记住的一件事-标题大约有5000列,50行和第二行。同样,第一列是我们不想计算的文本格式。如果您查看我附带的图像,它将使所有内容变得清晰。我尝试了一些,但都没有用。

df = df.set_index('ID_REF')
df = df.append(pd.DataFrame(dict(((df.notnull()) & (df != 0)).sum()), index=['Final']))

这是csv文件映像版本:

data csv file

这是我正在寻找的输出:

output

1 个答案:

答案 0 :(得分:0)

只需使用:

df.ne(0).sum()

按列求和非零值的数量。

如果要将其重新粘贴到原始数据框中,请将系列重命名为total,以便将其称为索引,然后使用append

df.append(df.ne(0).sum().rename('total'))

示例

>>> df
   0  1  2  3  4
0  0  0  1  0  1
1  1  0  1  1  0
2  0  0  0  1  1
3  1  1  1  0  0
4  1  1  0  0  0

>>> df.ne(0).sum()
0    3
1    2
2    3
3    2
4    2
dtype: int64

>>> df.append(df.ne(0).sum().rename('total'))
       0  1  2  3  4
0      0  0  1  0  1
1      1  0  1  1  0
2      0  0  0  1  1
3      1  1  1  0  0
4      1  1  0  0  0
total  3  2  3  2  2