Python Pandas:跨多个列获取行中指定值的频率
我有一个包含许多列数字数据的大型数据集,希望能够计算每行中的所有零。下面将生成一个小样本数据Python Pandas:跨多个列获取行中指定值的频率,python,pandas,Python,Pandas,我有一个包含许多列数字数据的大型数据集,希望能够计算每行中的所有零。下面将生成一个小样本数据 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() 我还并没有弄清楚如何在每一行
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()
我还并没有弄清楚如何在每一行中得到零的计数。如蒙协助,将不胜感激 对于计数匹配值,可以使用布尔掩码的
True
s的sum
如果需要新列:
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
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
如果需要新行:
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['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
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