如何用正则表达式拆分Pandas Series,区分颜色与带特殊字符的车辆信息
Pandas DataFrame列拆分:适配含特殊字符的车辆信息
原始DataFrame
import pandas as pd data = { 'MyCol': [ 'Red Motor', 'Blue Taxi', 'Green Taxi-1', 'Light blue small Taxi-1', 'Light blue big Taxi-2' ] } df = pd.DataFrame(data)
问题分析
原正则表达式用\w+匹配车辆信息,但\w仅支持字母、数字和下划线,无法匹配-这类特殊字符,导致拆分失效。
解决方案
调整正则表达式,让车辆部分支持任意特殊字符,同时保留对small/big修饰词的匹配:
# 拆分颜色和车辆列 df[['颜色', '车辆']] = df['MyCol'].str.extract(r'^(.*)\s((?:small|big)?\s?.+)$') # 可选:清理列内容首尾空格,让结果更整洁 df['颜色'] = df['颜色'].str.strip() df['车辆'] = df['车辆'].str.strip()
最终结果
执行后DataFrame内容:
| MyCol | 颜色 | 车辆 |
|---|---|---|
| Red Motor | Red | Motor |
| Blue Taxi | Blue | Taxi |
| Green Taxi-1 | Green | Taxi-1 |
| Light blue small Taxi-1 | Light blue | small Taxi-1 |
| Light blue big Taxi-2 | Light blue | big Taxi-2 |
正则规则说明
^(.*)\s:匹配从字符串开头到最后一个空格的所有内容,作为颜色列((?:small|big)?\s?.+)$:匹配最后一个空格后的所有内容(车辆信息):(?:small|big)?:可选匹配small或big修饰词\s?:匹配修饰词与车辆名之间的可选空格.+:匹配任意非换行字符(包含特殊符号)直到字符串结尾
内容的提问来源于stack exchange,提问作者test tes
相关产品推荐
相关产品推荐

