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

Pandas创建新列:判断行内其余值是否均为空字符串

解决方案:给Pandas DataFrame添加判断全空行的新列

没问题,我来帮你搞定这个需求!核心思路是先把所有仅包含空白字符的字符串(比如' ')转换成等效的空状态,再判断每行是否所有列都满足“空”的条件。

基础实现(仅字符串列)

如果你的DataFrame所有列都是字符串类型,用下面的方法最直接高效:

步骤1:创建示例DataFrame

import pandas as pd

d = {'col1': ['', '2', '   '], 'col2': ['', 'alpha', '  ']}
df = pd.DataFrame(data=d)

步骤2:添加新列

这里有两种简洁的写法,任选其一即可:

写法一:先统一处理空白字符串,再判断全空

# 先把所有单元格去掉前后空格,将空字符串转为缺失值pd.NA
trimmed_df = df.apply(lambda col: col.str.strip().replace('', pd.NA))
# 检查每行是否所有列都是缺失值
df['new_column'] = trimmed_df.isna().all(axis=1)

写法二:逐行检查每个单元格

# 对每行的每个单元格,去掉空格后判断是否为空,用all()确认所有单元格都满足空条件
df['new_column'] = df.apply(lambda row: all(cell.strip() == '' for cell in row), axis=1)

运行结果

执行后你的DataFrame会变成:

col1   col2  new_column
0          ""        True
1    2  alpha       False
2   "   " "  "        True

进阶兼容:包含非字符串列的情况

如果你的DataFrame里有数字、布尔值等非字符串列,上面的方法会报错(因为非字符串类型没有strip()方法)。这时候可以写一个自定义函数来兼容所有列类型:

def is_all_empty(row):
    for cell in row:
        # 字符串类型:检查去掉空格后是否为空
        if isinstance(cell, str):
            if cell.strip() != '':
                return False
        # 非字符串类型:只要不是缺失值,就不算空
        else:
            if pd.notna(cell):
                return False
    return True

df['new_column'] = df.apply(is_all_empty, axis=1)

这个函数会自动区分单元格类型:非空的数字、布尔值等会被识别为“非空”,而空白字符串、空字符串都会被判定为“空”,完美适配混合类型的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:37:32