我正在寻找创建一个具有计数功能的新列。此计数功能应该对df的指定列中的非零值进行计数,而忽略其他列。
我尝试计算非零值,但其中包括我希望其忽略的列。我只希望它计算具有非零值的第2-9列(假设第一列为0)。
-L
答案 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