df['modelCode'] = df['modelCode'].apply(lambda x: re.sub(r'(\d+),\1', r'\1', x))

13 阅读1分钟

这行代码的作用是:
df['modelCode'] 列中的每个值,查找重复的数字+逗号(,)结构,比如 "123,123",并将其替换成单个数字 "123"


👇 分析这段代码:

df['modelCode'] = df['modelCode'].apply(
    lambda x: re.sub(r'(\d+),\1', r'\1', x)
)
  • re.sub(pattern, replacement, string):正则替换函数。

  • r'(\d+),\1':匹配格式是 "数字,数字",并且两个数字要完全一样

    • (\d+):匹配一串数字(比如 123),并作为第一个捕获组。
    • ,\1:表示逗号后跟的内容和前面捕获的数字一样。
  • r'\1':保留第一个数字,去掉后面的重复部分。


✅ 举例说明:

原始 modelCode替换后 modelCode
'123,123''123'
'456,456''456'
'789''789'
'123,456''123,456'(不变)
'abc,abc''abc,abc'(不变,因为非数字)

❗注意事项:

  • 这条正则只处理形如 "123,123" 的重复数字结构;
  • 不处理非数字重复、多个重复项或不一致重复(比如 '123,456');
  • 如果你希望支持更多复杂场景(如多个重复、非数字等),可以扩展正则或用其他逻辑。