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

Pandas DataFrame查找?所在行列 CSV非ASCII字符替换实现教程

完整实现代码

import pandas as pd

# 1. 读取csv文件,分隔符、跳过行数等参数根据实际文件调整
df = pd.read_csv('../test.csv', sep='|', skiprows=1)

# 2. 替换所有非ASCII字符为?
# 仅处理字符串类型列,避免数值列报错
str_columns = df.select_dtypes(object).columns
df[str_columns] = df[str_columns].apply(
    lambda col: col.str.encode("ascii", "replace").str.decode("ascii")
)

# 3. 定位含?的内容,支持两种返回格式
### 格式1:列表格式返回,每个元素为对应列下含?的行DataFrame
result_list = []
for col in str_columns:
    matched_rows = df.loc[df[col].str.contains(r'\?', na=False)]
    result_list.append(matched_rows)

### 格式2:DataFrame格式返回,汇总所有匹配位置的列名、行索引、对应行内容
result_detail = []
for col in str_columns:
    matched_indexes = df[df[col].str.contains(r'\?', na=False)].index
    for idx in matched_indexes:
        result_detail.append({
            "匹配列名": col,
            "匹配行索引": idx,
            "行完整内容": df.loc[idx].to_dict()
        })
result_df = pd.DataFrame(result_detail)

# 输出测试
print("列表格式结果:")
print(result_list)
print("\n汇总DataFrame格式结果:")
print(result_df)

注意说明

  • 原示例代码运行报错的核心原因是未定义遍历变量cols,上述代码直接用筛选出的字符串列遍历,解决该问题
  • 匹配?时增加了正则转义符\,避免?被识别为正则通配符导致匹配异常
  • 所有操作默认跳过非字符串类型的列,不会出现类型不匹配报错
  • 若需要保留原始数据不被修改,可在读取csv后先执行df_raw = df.copy()备份原始数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:15:07