如何为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
相关产品推荐
相关产品推荐

