计算和打印数据框中每列的零和负值

时间:2019-02-27 22:44:37

标签: python python-3.x pandas dataframe

我想在每个Dataframe列中打印一条语句,向我显示零值和负值计数。

我的输入将类似于:

import pandas as pd

df = pd.DataFrame({'a': [-3, -2, 0], 'b': [-2, 2, 5], 'c': [-1, 0, 7], 'd': [1, 4, 8]})

哪些印刷品:

   a  b  c  d
0 -3 -2 -1  1
1 -2  2  0  4
2  0  5  7  8

我想要的输出是:

Negatives Found:
a    2
b    1
c    1
d    0

Zeros Found:
a    1
b    0
c    1
d    0

我找不到一种简单的方法来实现这一点,而无需使用以下方法从数据框创建数据框:

df_neg = df < 0
df_zero = df == 0

但是,这仅在True或False时计数。

进行可打印并“容易”在较大数据集上运行的计数的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用wherecount

df.where(condition).count()

df = pd.DataFrame({'a': [-3, -2, 0], 'b': [-2, 2, 5], 'c': [-1, 0, 7], 'd': [1, 4, 8]})
print('Negatives Found:')
print(df.where(df < 0).count())
print('Zeros Found:')
print(df.where(df == 0).count())

此打印

Negatives Found:
a    2
b    1
c    1
d    0

Zeros Found:
a    1
b    0
c    1
d    0

答案 1 :(得分:1)

这是您尝试过的方法:

否定词:

(df<0).sum()

零:

(df==0).sum()

如果这对您不利,并且您真的不想生成布尔型的掩码并计算它们(以为我不知道为什么会打扰您),请告诉我,您可以循环的结果相同

答案 2 :(得分:0)

您可以简单地:

print(df[df<0].count())
print(df[df==0].count())

a    2
b    1
c    1
d    0
dtype: int64
a    1
b    0
c    1
d    0
dtype: int64