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

如何删除pandas DataFrame指定列中包含非字母字符的记录?

pandas过滤含数字、特殊字符行的实现方案

你需要的过滤逻辑本质是仅保留所有字段均为纯英文字母组成的行,只要任意字段包含数字、空格、下划线等非字母字符,整行删除,实现步骤如下:

  • 核心判断用正则表达式^[A-Za-z]+$,该规则会匹配从开头到结尾全为大小写英文字母、无其他任何字符的字符串。
  • 对DataFrame逐单元格做正则匹配,筛选出所有列都匹配成功的行即可。

可直接运行的参考代码:

import pandas as pd

# --------------- 以下为构造测试数据,你使用时可直接跳过,用你自己的df即可 ---------------
df = pd.DataFrame({
    'A': ['ASR', '33AB', 'AS_TY', '45 TYY', 'TY HG', 'TRD', 'YTR'],
    'B': ['IN', 'ST', 'YT', 'IN', 'SG', 'US', 'WS']
})

# --------------- 核心过滤代码 ---------------
# 逐单元格匹配纯字母规则,所有列都符合的行保留
df_result = df[df.apply(lambda x: x.str.fullmatch(r'^[A-Za-z]+$')).all(axis=1)]

执行后打印df_result就能得到你期望的输出:

A   B
0  ASR  IN
5  TRD  US
6  YTR  WS

补充说明:

  • 这里用fullmatch是为了确保整个字符串完全符合规则,避免部分匹配漏判
  • 如果要求内容必须全大写,把正则改成^[A-Z]+$即可
  • 如果只需要校验指定列而非全部列,比如仅校验A列,过滤代码可以简化为df_result = df[df['A'].str.fullmatch(r'^[A-Za-z]+$')]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:16:04