You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas统计每行指定前缀列的非NaN值数量

解决方法:统计指定前缀列的每行非NaN值数量

你已经正确筛选出了前缀为number的列,接下来用pandas内置的count()方法就能快速统计每行的非缺失值数量,无需复杂的lambda操作。

完整代码实现

import pandas as pd
import numpy as np

# 构造示例数据集
data = {
    'id': [1, 2, 3],
    'something': [105, 300, 20],
    'number1': [200, 2, 1],
    'number2': [np.nan, 1, np.nan],
    'number3': [np.nan, 1, np.nan],
    'number4': [50, 33, np.nan]
}
df = pd.DataFrame(data)

# 1. 筛选前缀为number的列(两种写法可选)
number_cols = df.columns[df.columns.str.startswith('number')]
# 更简洁的正则筛选写法:number_cols = df.filter(regex='^number').columns

# 2. 统计每行非NaN值的数量并生成新列
df['sum_columns'] = df[number_cols].count(axis=1)

print(df)

代码说明

  • df[number_cols].count(axis=1):count()方法默认自动忽略NaN值,axis=1参数指定按行统计,直接返回每行的非缺失值数量,这是效率最高的实现方式。
  • 如果你想用lambda实现,也可以这么写(效率略低于count()):
    df['sum_columns'] = df[number_cols].apply(lambda row: row.notna().sum(), axis=1)
    

输出结果

idsomethingnumber1number2number3number4sum_columns
1105200NaNNaN502
2300211334
3201NaNNaNNaN1

内容的提问来源于stack exchange,提问作者Lurri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:25:18