如何在Pandas中移除方括号内的文本?
如何移除Pandas列中方括号及其内部的内容
方法一:使用Pandas矢量化字符串操作(推荐)
Pandas的str.replace方法支持正则表达式,无需手动遍历,效率远高于逐行处理。用以下正则就能匹配并移除方括号及其内部的所有内容,同时自动清理括号前的多余空格:
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'text_col': [ 'String [more string]', 'Another example [with extra words]', 'No brackets in this one', 'Multi brackets [first] [second]' ] }) # 处理列,生成清理后的新列 df['cleaned_text'] = df['text_col'].str.replace(r'\s*\[[^\]]*\]', '', regex=True)
处理后结果示例:
| text_col | cleaned_text |
|---|---|
| String [more string] | String |
| Another example [with extra words] | Another example |
| No brackets in this one | No brackets in this one |
| Multi brackets [first] [second] | Multi brackets |
正则表达式说明:
\s*:匹配方括号前的任意数量空白字符(避免清理后留下多余空格)\[:匹配左方括号(转义是因为[在正则中是特殊字符)[^\]]*:匹配除右方括号]外的任意字符,0次或多次\]:匹配右方括号
方法二:使用lambda函数配合正则(逐行处理)
如果需要用lambda函数实现,可以结合re.sub和apply完成:
import pandas as pd import re df = pd.DataFrame({ 'text_col': ['String [more string]', 'Another text [test]'] }) df['cleaned_text'] = df['text_col'].apply(lambda x: re.sub(r'\s*\[[^\]]*\]', '', x))
注意:这种方法是逐行遍历处理,当数据集较大时,效率会低于矢量化的str.replace,所以优先推荐第一种方法。
内容的提问来源于stack exchange,提问作者Bruno Ramos Martins
相关产品推荐
相关产品推荐

