计算df中列系列的所有非零值

时间:2019-05-17 18:31:45

标签: python-3.x pandas

我正在寻找创建一个具有计数功能的新列。此计数功能应该对df的指定列中的非零值进行计数,而忽略其他列。

我尝试计算非零值,但其中包括我希望其忽略的列。我只希望它计算具有非零值的第2-9列(假设第一列为0)。

-L

1 个答案:

答案 0 :(得分:0)

.count计算非NaN值。您可以使用!= 0和.sum来计算非零值:

In [11]: df = pd.DataFrame([[0, 'a'], [1, 'b'], [0, 'c']], columns=['A', 'B'])

In [12]: df
Out[12]:
   A  B
0  0  a
1  1  b
2  0  c

获取那些非零的布尔数据框:

In [13]: df != 0
Out[13]:
       A     B
0  False  True
1   True  True
2  False  True

并取列总和:

In [14]: (df != 0).sum()
Out[14]:
A    1
B    3
dtype: int64

要仅选择数字列,可以使用select_dtypes(具有np.number):

In [15]: df.select_dtypes(np.number)
Out[15]:
   A
0  0
1  1
2  0

In [16]: (df.select_dtypes(np.number) != 0).sum()
Out[16]:
A    1
dtype: int64