如何用正则表达式(re)拆分DataFrame中含数字与字符串的列
拆分DataFrame中数字与字符串组合的symbol列
用Pandas的str.extract()方法配合正则表达式就能一次性拆分出数字和字符串部分,具体实现步骤如下:
- 导入库并定义原DataFrame
import pandas as pd df = pd.DataFrame({'symbol': ['12345abc', '2234bcd', '323456cde'],'date':[5, 6, 7]})
- 执行拆分操作
# 用正则提取数字段和字母段,分别存入num和name列 df[['num', 'name']] = df['symbol'].str.extract(r'^(\d+)([a-zA-Z]+)$') # 按照示例要求,把原symbol列替换成提取出的数字部分 df['symbol'] = df['num'] # 可选:如果不需要单独保留num列,直接删除即可 # df.drop('num', axis=1, inplace=True)
- 正则表达式说明
^(\d+)([a-zA-Z]+)$的作用:
^:锁定字符串开头(\d+):捕获连续的数字序列,对应num列([a-zA-Z]+):捕获连续的大小写字母序列,对应name列$:锁定字符串结尾
如果你的字符串部分包含数字以外的其他字符(比如符号),可以把正则改成更通用的^(\d+)(\D+)$,\D会匹配任意非数字字符。
- 最终结果
执行完代码后,DataFrame就会变成你需要的结构:
print(df) # 输出: # symbol name date # 0 12345 abc 5 # 1 2234 bcd 6 # 2 323456 cde 7
内容的提问来源于stack exchange,提问作者Tony Lin
相关产品推荐
相关产品推荐

