我想在每个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时计数。
进行可打印并“容易”在较大数据集上运行的计数的最佳方法是什么?
答案 0 :(得分:1)
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