【发布时间】:2019-01-10 14:01:23
【问题描述】:
我正在尝试按列计算 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,是非零元素,如果检查输出应该清楚,第一列显示54表示没有0值,但第二个显示 53 表示有一个 0 值,第三个显示 52 表示该列中有两个 0 值,这就是我要查找的输出。如果您还有任何困惑,请询问:)
-
@harvpan @harvpan
df = pd.read_csv('transposed.csv').reset_index() # update headers df.columns = df.iloc[0] df = df.iloc[1:].set_index("ID_REF") df.loc["Final"] = (df != 0).sum()这是此代码的输出:link
标签: python-3.x pandas for-loop count