如何在pandas字符串列的最后一个整数位置拆分数据?
解决方案
方法一:用rsplit结合正则断言精准拆分
直接通过从右向左匹配最后一个数字后的空格,拆分出两部分:
# 拆分原列并生成两个新列 df[['前半部分', '后半部分']] = df['Original Column'].str.rsplit(r'(?<=\d)\s+', n=1, expand=True)
- 正则
r'(?<=\d)\s+'的作用:(?<=\d)是正向肯定断言,确保匹配的空格紧跟在数字之后;\s+匹配一个或多个空格。 rsplit从字符串右侧开始查找分隔符,n=1限制只拆分1次,刚好在最后一个数字后的空格处分割,完美符合你的需求。
方法二:用str.extract捕获分组提取
通过正则分组直接提取前后两部分内容:
# 捕获两个分组生成新列 df[['前半部分', '后半部分']] = df['Original Column'].str.extract(r'^(.*\d)\s+(.*)$', expand=True)
- 正则
r'^(.*\d)\s+(.*)$'的逻辑:(.*\d)捕获第一组:从字符串开头到最后一个数字的所有内容(包含数字);\s+匹配数字后的空格;(.*)$捕获第二组:空格之后的所有文本内容。
这两种方法都能避免你之前代码中“每个数字都拆分”的问题,精准定位到最后一个数字的位置完成分割。
内容的提问来源于stack exchange,提问作者Rishabh Tripathi
相关产品推荐
相关产品推荐

