如何将DataFrame中特定格式的字符串列拆分为两列?
拆分DataFrame中的字符串为指定两列
假设你的DataFrame有一列(比如命名为raw_col)包含目标格式的字符串,以下两种方法可以快速完成拆分:
方法1:使用str.extract提取匹配组
利用正则表达式直接捕获两部分内容,适合明确需要提取特定模式的场景:
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'raw_col': ['Rondonópolis (c/ 5,2%) 3500 7000 2789 4258'] }) # 提取为两列 df[['A', 'B']] = df['raw_col'].str.extract(r'^(.*?)\s+(\d.*)$')
正则说明:
^(.*?):非贪婪匹配从字符串开头到第一个连续空格的所有内容(即城市名称和百分比部分)\s+:匹配分隔用的一个或多个空格(\d.*):匹配从第一个数字开始到字符串结尾的所有内容(即后续的数字序列)
方法2:使用str.split按条件拆分
通过正向预查指定拆分规则,仅在"空格后紧跟数字"的位置拆分,拆分次数限制为1,确保只生成两列:
df[['A', 'B']] = df['raw_col'].str.split(r'\s+(?=\d)', n=1, expand=True)
正则说明:
\s+(?=\d):匹配一个或多个空格,且空格后面必须是数字(正向预查(?=\d)确保不会拆分数字之间的空格)n=1:只执行一次拆分,避免把数字部分拆成多列expand=True:将拆分结果展开为DataFrame列
执行后,你的DataFrame会生成A和B两列,完全符合需求。
内容的提问来源于stack exchange,提问作者Luciano Amaro
相关产品推荐
相关产品推荐

