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

如何检测pandas dataframe中含非指定字符的单元格及其位置

Pandas DataFrame 字符合规校验实现方案

校验规则

指定合法字符范围为:A、B、C、a、b、c、1、2、3、&、%、=、/,需识别所有包含非合法字符的单元格,输出对应行索引、列名、异常值。

完整实现代码

import pandas as pd
import re

# 1. 构造示例DataFrame(实际使用时替换为你的数据源)
df = pd.DataFrame({
    'Col1': ['Abc', 'bbb'],
    'Col2': ['Øa', '+'],
    'Col3': ['12', '}']
})

# 2. 定义合法字符校验规则
# 正则含义:匹配仅由指定合法字符组成的完整字符串
legal_regex = re.compile(r'^[ABCabc123&%=/]*$')

# 3. 遍历校验所有单元格
abnormal_list = []
for row_idx, row_data in df.iterrows():
    for col_name, cell_val in row_data.items():
        # 统一转为字符串校验,兼容数值类型单元格
        cell_str = str(cell_val)
        # 若需将空值/NaN判定为合法,可取消注释下一行
        # if pd.isna(cell_val): continue
        if not legal_regex.fullmatch(cell_str):
            abnormal_list.append({
                "行索引": row_idx,
                "列名": col_name,
                "异常值": cell_val
            })

# 4. 输出异常结果
for item in abnormal_list:
    print(f"行索引:{item['行索引']},列名:{item['列名']},异常值:{item['异常值']}")

运行输出结果

行索引:0,列名:Col2,异常值:Øa
行索引:1,列名:Col2,异常值:+
行索引:1,列名:Col3,异常值:}

说明

  • 正则采用全匹配规则,确保单元格内所有字符都属于合法集合,不会出现部分字符合法就判定通过的误差
  • 可直接修改legal_regex中括号内的字符集,快速适配不同的合规校验需求
  • 对于大体积DataFrame,可将遍历逻辑替换为df.stack().apply()的向量化操作提升运行效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:27:02