我有一个大型数据集,其中包含许多列数值数据,并且希望能够计算每一行中的所有零。以下将生成一小部分数据示例。
df = pd.DataFrame(np.random.randint(0, 3, size=(8,3)),columns=list('abc'))
df
虽然我可以创建一列以使用以下代码对行中的所有值求和:
df2=df.sum(axis=1)
df2
我可以在一列中得到零的计数:
df.loc[df.a==1].count()
我一直无法弄清楚如何获得每一行的零计数。任何帮助将不胜感激。
答案 0 :(得分:1)
对于计数匹配的值,可以使用sum
个布尔掩码中的True
个。
如果需要新列:
df['sum of 1'] = df.eq(1).sum(axis=1)
#alternative
#df['sum of 1'] = (df == 1).sum(axis=1)
示例:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(0, 3, size=(8,3)),columns=list('abc'))
df['sum of 1'] = df.eq(1).sum(axis=1)
print (df)
a b c sum of 1
0 0 0 2 0
1 1 0 1 2
2 0 0 0 0
3 2 1 2 1
4 2 2 1 1
5 0 0 0 0
6 0 2 0 0
7 1 1 1 3
如果需要新行:
df.loc['sum of 1'] = df.eq(1).sum()
#alternative
#df.loc['sum of 1'] = (df == 1).sum()
示例:
np.random.seed(2020)
df = pd.DataFrame(np.random.randint(0, 3, size=(8,3)),columns=list('abc'))
df.loc['sum of 1'] = df.eq(1).sum()
print (df)
a b c
0 0 0 2
1 1 0 1
2 0 0 0
3 2 1 2
4 2 2 1
5 0 0 0
6 0 2 0
7 1 1 1
sum of 1 2 2 3