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

如何删除Pandas中除前两列外含非法字符的行?

解决方案

核心思路是动态选取除前两列外的所有列,批量验证每个值是否符合规则,最终保留所有后续列都合法的行,具体实现如下:

代码实现

import pandas as pd
import re
import numpy as np

# 读取xlsx文件(替换为你的文件路径)
df = pd.read_excel("your_file.xlsx")

# 定义合法性校验函数
def is_valid(value):
    if pd.isna(value):
        return True
    # 匹配正则规则:数字开头,可跟若干个"-数字"组合
    return bool(re.fullmatch(r'\d([-]\d)*', str(value)))

# 动态获取除前两列外的目标列
target_columns = df.columns[2:]

# 生成每行的合法性标记:所有目标列都合法则为True
valid_rows = df[target_columns].applymap(is_valid).all(axis=1)

# 筛选符合要求的行
filtered_df = df[valid_rows]

关键步骤说明

  • 动态列选取:df.columns[2:]自动获取前两列之后的所有列,不管后续列数量如何变化都能适配。
  • 批量校验:applymap(is_valid)对目标列的每个元素逐一校验,返回布尔矩阵标记每个值是否合法。
  • 行级筛选:.all(axis=1)确保只有当该行所有后续列的值都符合规则时,才会被保留。

这个方案避免了遍历列的繁琐操作,不需要穷举合法值,也无需合并列,完全满足需求且实现优雅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:20