如何在Pandas的逗号分隔列中用REGEX移除[CS][LV]前的文本及括号内容?
在Pandas中用正则移除逗号分隔列中的特定内容
需求:删除DataFrame某列中所有包含[CS]、[LV]的片段(包括标签本身及其前面的文本),处理后的列保留剩余的逗号分隔内容。
输入数据
colA My Company Ltd [CS], address, nbc [LV], state [NP], pc [SS], country Business Plc [CS], address, abc [LV], state [NP], code [SS], country Work Harder Inc [CS], address, xyz[CS], state [NP], code [SS], country Company Business People [CS], address, typode [SS], country, nlp [CS]
解决方案
正则表达式说明
使用正则r'[^,]*\[(CS|LV)\],?\s*'匹配需要删除的片段,各部分含义:
[^,]*:匹配逗号前的任意非逗号字符(即标签前的所有文本)\[(CS|LV)\]:精确匹配[CS]或[LV],转义方括号是因为其在正则中属于特殊语法,?\s*:匹配可选的逗号及后续任意空白字符,避免删除后留下多余的分隔符或空格
完整代码实现
import pandas as pd # 构造示例DataFrame data = { 'colA': [ 'My Company Ltd [CS], address, nbc [LV], state [NP], pc [SS], country', 'Business Plc [CS], address, abc [LV], state [NP], code [SS], country', 'Work Harder Inc [CS], address, xyz[CS], state [NP], code [SS], country', 'Company Business People [CS], address, typode [SS], country, nlp [CS]' ] } df = pd.DataFrame(data) # 执行正则替换 df['colA'] = df['colA'].str.replace(r'[^,]*\[(CS|LV)\],?\s*', '', regex=True) # 可选:处理可能存在的首尾多余逗号/空格(根据实际情况) df['colA'] = df['colA'].str.strip(', ') print(df)
处理结果
colA address, state [NP], pc [SS], country address, state [NP], code [SS], country address, state [NP], code [SS], country address, typode [SS], country
内容的提问来源于stack exchange,提问作者Santoo
相关产品推荐
相关产品推荐

