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

如何为Pandas DataFrame添加统计指定列非空数量的Score列?

问题:为DataFrame添加Score列统计指定列的非空值数量

原始DataFrame数据:

Name   Col1 Col2 Col3 Col4 Col5 Col6    
A      Y    Y         Y              
B      Y         Y    Y         Y
C           Y    Y          Y       
D      Y    

需求:添加Score列,统计Col1至Col6列中包含值的列数,最终效果如下:

Name   Col1 Col2 Col3 Col4 Col5 Col6  Score
A      Y    Y         Y               3
B      Y         Y    Y         Y     4
C           Y    Y          Y         3
D      Y                              1

尝试的错误代码:

df['Score'] = df.count(df[['Col1','Col2','Col3','Col4','Col5','Col6']], axis='columns')

正确实现方法

情况1:空值为Pandas默认的NaN

如果你的空值是Pandas识别的缺失值(NaN),直接选中目标列后按行统计非空值数量即可:

df['Score'] = df[['Col1','Col2','Col3','Col4','Col5','Col6']].count(axis=1)

情况2:空值为空字符串""

如果表格里的空值是实际的空字符串(不是NaN),可以用两种方式处理:

  • 方法1:先把空字符串转为NaN,再统计
    import pandas as pd
    # 将空字符串替换为Pandas缺失值
    df[['Col1','Col2','Col3','Col4','Col5','Col6']] = df[['Col1','Col2','Col3','Col4','Col5','Col6']].replace("", pd.NA)
    df['Score'] = df[['Col1','Col2','Col3','Col4','Col5','Col6']].count(axis=1)
    
  • 方法2:直接判断单元格是否非空,再求和
    df['Score'] = df[['Col1','Col2','Col3','Col4','Col5','Col6']].ne("").sum(axis=1)
    

错误原因说明

count()方法不需要传入额外的DataFrame参数,它是对调用它的数据集进行统计。你传入子DataFrame的写法不符合方法的参数规则,导致执行失败。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:05:09