熊猫:在多列中连续获取指定值的频率

时间:2020-03-19 07:07:49

标签: python pandas

我有一个大型数据集,其中包含许多列数值数据,并且希望能够计算每一行中的所有零。以下将生成一小部分数据示例。

    df = pd.DataFrame(np.random.randint(0, 3, size=(8,3)),columns=list('abc'))
    df

Sample snippet of data

虽然我可以创建一列以使用以下代码对行中的所有值求和:

    df2=df.sum(axis=1)
    df2

我可以在一列中得到零的计数:

    df.loc[df.a==1].count() 

我一直无法弄清楚如何获得每一行的零计数。任何帮助将不胜感激。

1 个答案:

答案 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