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

如何在Python中移除DataFrame列中的指定特殊字符(单引号)

解决单引号移除时误删句号的问题

嘿,我来帮你排查这个问题!首先看你的代码,理论上replace(r'\'', '')只应该匹配单引号并移除,但你说句号也被删掉了,大概率是列名大小写不匹配或者使用的替换方式不够精准导致的,咱们一步步来修正:

问题分析

你的源数据列名是Length(首字母大写),但代码里用的是combined['LENGTH'](全大写)—— pandas的列名是区分大小写的!这就导致你的替换操作根本没作用在目标列上,你看到的句号消失可能是其他环节的问题,或者你误把未处理的原始数据当成了替换后的结果。

另外,用Series.str.replace比直接用replace更针对字符串列,能避免意外的匹配问题。

修正后的代码

import pandas as pd
import glob

path = input("Enter the location of files ")
GLB_DM_VER = input("Enter global DM version")
GLB_DM_ENV = input("Enter the global DM version environment")

file_list = glob.glob(path + "\*.xls")
excels = [pd.ExcelFile(name) for name in file_list]
frames = [x.parse(x.sheet_names[2], header=0, index_col=None) for x in excels]
combined = pd.concat(frames)

# 先确认列名是否正确(可以先打印查看:print(combined.columns))
# 这里假设源数据列名是Length,若实际是LENGTH则改成对应大写
combined['Length'] = combined['Length'].str.replace("'", "", regex=False)

# 如果你确定列名是全大写的LENGTH,就用下面这行替换上面的:
# combined['LENGTH'] = combined['LENGTH'].str.replace("'", "", regex=False)

combined.to_csv(
    "STAND_2.csv",
    header=['Global_DM_VERSION_ID','Global_DM_VERSION_ENV','TARGET_DOMAIN','SOURCE_DOMAIN','DOMAIN_LABEL','SOURCE_VARIABLE','RAVE_LABEL','TYPE','VARIABLE_LENGTH','CONTROL_TYPE','CODELIST_OID','TARGET_VARIABLE','MANDATORY','RAVE_ORIGIN'],
    index=False
)

关键修改点

  1. 匹配正确的列名:先通过print(combined.columns)确认合并后DataFrame的列名,确保和你要处理的列名完全一致(大小写、拼写都不能错)。
  2. 使用str.replace精准处理字符串列:str.replace专门针对Series中的字符串元素进行替换,加上regex=False可以直接按字面匹配单引号,避免正则表达式的潜在意外。

验证步骤

在替换后可以先打印处理结果确认:

print("处理后的Length列:")
print(combined['Length'])

这样能直观看到单引号是否被移除,句号是否保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:25:04