我正在尝试逐列计算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文件映像版本:
这是我正在寻找的输出:
答案 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