如何用Pandas统计DataFrame每行非零值的列数?
如何给Pandas DataFrame新增列统计每行非零值数量?
可以通过Pandas的布尔判断+按行求和快速实现,下面是具体步骤:
1. 构造示例DataFrame
import pandas as pd data = { 'col1': [0, 0, 0, 0], 'col2': [0, 0, 0, 2], 'col3': [2, 0, 8, 2], 'col4': [3, 3, 3, 3], 'col5': [0, 0, 0, 0] } df = pd.DataFrame(data)
2. 新增统计非零值数量的列
有两种常用写法,效果完全一致:
方法一:用ne(0)判断非零后求和
df['nonzero'] = df.ne(0).sum(axis=1)
方法二:转为布尔类型后求和
df['nonzero'] = df.astype(bool).sum(axis=1)
3. 最终结果
执行后DataFrame会变成:
| col1 | col2 | col3 | col4 | col5 | nonzero |
|---|---|---|---|---|---|
| 0 | 0 | 2 | 3 | 0 | 2 |
| 0 | 0 | 0 | 3 | 0 | 1 |
| 0 | 0 | 8 | 3 | 0 | 2 |
| 0 | 2 | 2 | 3 | 0 | 3 |
原理说明
df.ne(0):生成一个布尔DataFrame,非零元素标记为True,零标记为Falseastype(bool):将数值型数据转为布尔值,非零值对应True,零对应Falsesum(axis=1):按行对布尔值求和(True等价于1,False等价于0),得到每行的非零值数量
内容的提问来源于stack exchange,提问作者Maths12
相关产品推荐
相关产品推荐

