如何按条件拆分Pandas DataFrame列:分离颜色与带修饰词的车辆
解决DataFrame中颜色与车辆信息的条件拆分问题
你的问题核心是车辆部分可能包含small/big这类修饰词,单纯按最后一个单词拆分无法识别这类多词的车辆名称。可以用正则表达式精准匹配车辆部分的模式,实现正确拆分:
具体实现代码
首先构建示例DataFrame:
import pandas as pd data = { 'MyCol': [ 'Red Motor', 'Green Taxi', 'Light blue small Taxi', 'Light blue big Taxi' ] } df = pd.DataFrame(data)
然后用str.extract结合正则表达式拆分:
# 正则匹配:捕获车辆部分(Motor/Taxi/small Taxi/big Taxi),其余为颜色 df[['color', 'vehicle']] = df['MyCol'].str.extract(r'^(.*?)\s+(small\s+Taxi|big\s+Taxi|Motor|Taxi)$', expand=True)
拆分结果
拆分后DataFrame如下:
| MyCol | color | vehicle |
|---|---|---|
| Red Motor | Red | Motor |
| Green Taxi | Green | Taxi |
| Light blue small Taxi | Light blue | small Taxi |
| Light blue big Taxi | Light blue | big Taxi |
正则逻辑说明
^(.*?)\s+:匹配开头到车辆部分前的所有内容(非贪婪模式,避免过度匹配),作为颜色列(small\s+Taxi|big\s+Taxi|Motor|Taxi)$:精准匹配所有可能的车辆格式,作为车辆列
内容的提问来源于stack exchange,提问作者test tes
相关产品推荐
相关产品推荐

