如何移除CSV文件中除1和0外的所有字母及其他数字?
Pandas 实现CSV仅保留0、1字符的处理方案
核心逻辑是用正则匹配批量替换所有非0、1的字符,不需要写循环逐行逐单元格处理,几行代码就能搞定。
完整处理代码
- 先导入依赖读入文件,必须指定读入格式为字符串,这是多数人处理失败的首要原因:
import pandas as pd # 替换成你自己的CSV文件路径 df = pd.read_csv("your_file.csv", dtype=str)
不指定
dtype=str的话,数值类列会被自动识别为int/float类型,后续正则替换会触发类型错误,或者直接跳过该列不处理。
- 执行全局替换,正则规则
[^01]会匹配所有不是0也不是1的字符,直接替换为空字符串:
# 全表所有单元格执行过滤 df = df.replace(r"[^01]", "", regex=True)
必须加
regex=True参数,否则pandas会默认做精确值匹配,只会替换内容完全等于[^01]的单元格,根本起不到字符过滤的效果,这是第二常见的失败原因。
- 处理完成后导出文件即可:
df.to_csv("processed_file.csv", index=False)
常见定制化调整
- 如果不需要处理全表,只需要清洗指定列:
# 括号里换成你要处理的列名即可 target_cols = ["column1", "column2"] df[target_cols] = df[target_cols].replace(r"[^01]", "", regex=True)
- 如果清洗后出现空单元格(原单元格没有任何0/1字符),可以按需转成空值或者指定填充值:
# 把空内容转成pandas标准空值 df = df.replace("", pd.NA) # 或者填充成你需要的内容,比如填充"0" # df = df.replace("", "0")
处理效果示例
| 处理前单元格内容 | 处理后单元格内容 |
|---|---|
| a1b3c0!x | 10 |
| 1029test | 10 |
| 2a3s4d | (空值) |
| 1!0@1#1 | 1011 |
内容的提问来源于stack exchange,提问作者WoohSteezy
相关产品推荐
相关产品推荐

