基于Pandas DataFrame每行非空列数生成新列的实现方案
在Pandas DataFrame中统计每行非空列的数量并新增列
嘿,这需求太常见了,用Pandas几步就能搞定!针对你给出的示例场景,我直接上可运行的代码,再给你拆解逻辑:
首先,咱们先重现你提供的示例DataFrame:
import pandas as pd df = pd.DataFrame({ 'ID':['1','2','3'], 'J1': ['a','ab',''], 'J2':['22','','33'] })
接下来就是核心操作——新增统计列。这里咱们用ne('')来识别非空字符串,再按行求和:
# 新增Count_of_cols_have_values列,统计每行非空列的数量 df['Count_of_cols_have_values'] = df.ne('').sum(axis=1)
运行完之后,你打印df就能得到期望的结果:
ID J1 J2 Count_of_cols_have_values 0 1 a 22 2 1 2 ab 1 2 3 33 1
逻辑拆解
df.ne(''):生成一个布尔值DataFrame,每个单元格如果不是空字符串就返回True(等价于1),否则返回False(等价于0).sum(axis=1):指定按行(axis=1)对布尔值求和,得到的就是每行非空列的数量
额外补充
如果你的DataFrame里存在的是NaN(而不是空字符串)类型的缺失值,那可以把ne('')换成notna(),代码改成:
df['Count_of_cols_have_values'] = df.notna().sum(axis=1)
这样就能兼容两种缺失值场景啦~
内容的提问来源于stack exchange,提问作者Jithendra
相关产品推荐
相关产品推荐

