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

如何用Pandas识别含特殊字符的数据行并标记或筛选?

解决Pandas识别含特殊字符行的问题

你的代码核心问题是判断逻辑错误:遍历的是整个DataFrame列而非每行的字符串,导致无法正确逐行检测特殊字符。以下是针对两个需求的具体解决方案:

需求1:新增列标记是否含特殊字符

提供两种实现方式,按需选择:

方法1:Pandas字符串方法(高效推荐)

利用str.contains批量处理列数据,通过正则匹配特殊字符:

import pandas as pd

# 读取数据
cn = pd.read_excel("../Files/df.xlsx", sheet_name='Values')
cn = cn[['DestinationName']]
# 定义特殊字符集,已处理正则转义
special_characters = r'!@#$%^&*()-+?_=,<>/'

# 新增标记列,匹配到特殊字符则为Y,否则为N
cn['Special Characters'] = cn['DestinationName'].str.contains(
    f'[{special_characters}]', 
    regex=True,
    na=False  # 空值统一标记为N,可按需调整
).map({True: 'Y', False: 'N'})

方法2:apply逐行处理(直观易懂)

适合新手理解逐行判断逻辑:

import pandas as pd

cn = pd.read_excel("../Files/df.xlsx", sheet_name='Values')
cn = cn[['DestinationName']]
special_characters = "!@#$%^&*()-+?_=,<>/"

# 对每行的字符串逐字符检查是否含特殊字符
cn['Special Characters'] = cn['DestinationName'].apply(
    lambda x: 'Y' if any(c in special_characters for c in str(x)) else 'N'
)

需求2:仅显示包含特殊字符的行

两种筛选方式可选:

方式1:基于标记列筛选

# 筛选出标记为Y的行
filtered_cn = cn[cn['Special Characters'] == 'Y']

方式2:直接筛选(无需新增列)

import pandas as pd

cn = pd.read_excel("../Files/df.xlsx", sheet_name='Values')
cn = cn[['DestinationName']]
special_characters = r'!@#$%^&*()-+?_=,<>/'

# 直接筛选含特殊字符的行
filtered_cn = cn[cn['DestinationName'].str.contains(f'[{special_characters}]', regex=True, na=False)]

注:如果DestinationName列存在空值,na=False会将空值排除在筛选结果外,可根据实际需求调整该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:55:23