移除DataFrame列值中()、?特殊字符的正确代码求助
解决DataFrame列中特殊字符移除问题
错误原因分析
你之前的代码存在两个问题:
- 第一段代码仅匹配连续的
()字符串,无法处理单个的(、)或分散的符号 - 第二段代码没有将替换结果赋值回原列,Pandas的
replace默认返回新对象,不会修改原数据
正确实现方案
我们可以利用正则表达式的字符集[],一次性匹配所有需要移除的特殊字符((、)、?等),同时注意将结果赋值回目标列。
示例代码
首先构造测试用的DataFrame:
import pandas as pd df = pd.DataFrame({ 'Community_final_level_2_description': ["()?()()() hello world'"] })
方案1:将特殊字符替换为空格
# 匹配(、)、?,替换为空格并赋值回原列 df['Community_final_level_2_description'] = df['Community_final_level_2_description'].replace(r'[()?]', ' ', regex=True)
处理后结果:" hello world'"
方案2:直接删除特殊字符
# 匹配(、)、?,替换为空字符串(直接删除) df['Community_final_level_2_description'] = df['Community_final_level_2_description'].replace(r'[()?]', '', regex=True)
处理后结果:" hello world'"
扩展:添加更多特殊字符
如果需要移除其他符号(比如单引号'),只需将字符加入正则字符集即可:
df['Community_final_level_2_description'] = df['Community_final_level_2_description'].replace(r'[()?\']', '', regex=True)
处理后结果:" hello world"
内容的提问来源于stack exchange,提问作者Filipe Wolfrum Caeiros
相关产品推荐
相关产品推荐

