如何移除字符串列中以四个及以上零开头的数字串?
移除产品名称列中以四个及以上零开头的编码
需要处理DataFrame的名称列,移除其中以4个或更多连续0开头的编码片段,但要保留像10000g这类重量信息里的连续零,同时处理编码和名称直接相连的情况。
示例输入数据
import pandas as pd data = { 'Name' : ['ANOA 250g 00004689', 'ANOA 10000g 00000059884', '80%c asjw 150000001568 ', 'Shivangi000000478761'], } testdf = pd.DataFrame(data)
解决方案
利用pandas的str.replace结合正则表达式,精准匹配并移除目标片段:
# 执行替换操作 testdf['Name'] = testdf['Name'].str.replace(r'(?:\s+0{4,}\d*)|(?<=\D)0{4,}\d*', '', regex=True) # 查看处理后的结果 print(testdf)
正则表达式说明
(?:\s+0{4,}\d*):匹配空白字符开头,后跟4个及以上连续0,再跟任意数字的片段(比如00004689),直接替换为空(?<=\D)0{4,}\d*:匹配非数字字符结尾的文本后紧跟的、以4个及以上连续0开头的数字序列(比如Shivangi后的000000478761),替换为空
这套规则既能避开10000g这类重量里的连续零(因为这些零不是以4个零开头的独立片段),也能处理编码和名称直接相连的场景。
最终结果
处理后的数据与预期完全一致:
results = { 'Name' : ['ANOA 250g', 'ANOA 10000g', '80%c asjw 150000001568 ', 'Shivangi'], } results_df = pd.DataFrame(results)
内容的提问来源于stack exchange,提问作者tailsrockc
相关产品推荐
相关产品推荐

