Python 从dataframe列中提取关键字,但不提取嵌套关键字
我有一个Python 从dataframe列中提取关键字,但不提取嵌套关键字,python,pandas,Python,Pandas,我有一个Pandas数据框,其中包含两个自由格式的文本列,人们在其中描述车辆的型号或装饰级别(例如:LE、1LT、RS、SS等)。在这些列中,有些人将只使用模型(例如:LE),其他人将添加其他文本(例如:2dr可转换SS w/2SS)。此外,模型级别具有一定的层次结构,即SS
Pandas数据框
,其中包含两个自由格式的文本列,人们在其中描述车辆的型号或装饰级别(例如:LE、1LT、RS、SS等)。在这些列中,有些人将只使用模型(例如:LE),其他人将添加其他文本(例如:2dr可转换SS w/2SS)。此外,模型级别具有一定的层次结构,即SS<1SS<2SS
我想提取这些模型或修剪级别的值,并在我的数据框中创建一个新列(例如:1ls=1ls、ZL-1=ZL1等)
如下所示,我现有的解决方案存在一个问题,2SS被归类为SS,或2LT被归类为LT。我也不知道如何处理在描述中包含两种不同型号的人,例如SS w/2SS
+-----+-------+------------------------------------+-----------------------------------------+
| | TRIM | SubModel | Trim |
+-----+-------+------------------------------------+-----------------------------------------+
| 0 | SS | SS-EDITION | SS-EDITION(MANUAL 6 SPEED) Coupe 2-Door |
| 1 | ZL1 | ZL1 | ZL1 Coupe 2-Door |
| 2 | SS | N/A | SS TRANSFORMER |
| 3 | None | 1LT RS AUTO BLUETOOTH REAR CAM | N/A |
| 4 | LS | N/A | LS |
| 5 | SS | Camaro SS | Camaro SS |
| 6 | None | Dusk Edition | N/A |
| 7 | SS | Camaro SS W/ RS Pkg | Camaro SS W/ RS Pkg |
| 8 | SS | 2dr Coupe SS w/2SS | 2dr Coupe SS w/2SS |
| 9 | 1LT | 2dr Convertible LT w/1LT | 2dr Convertible LT w/1LT |
| 10 | LT | N/A | 2LT |
| 11 | 1LT | LT RS 6-SPD SUNROOF REAR CAM 20'S | 1LT Coupe 2-Door |
| 12 | SS | 2dr Convertible SS w/2SS | 2dr Convertible SS w/2SS |
| 13 | LT | 2dr Convertible LT w/2LT | 2dr Convertible LT w/2LT |
| 14 | LT | N/A | 2LT |
| 15 | LE | N/A | RARE ZL1 - LOW MILES |
| 16 | SS | 2SS AUTO LEATHER NAV HUD 20'S | SS Coupe 2-Door |
| 17 | SS | SS | SS Coupe 2-Door |
| 18 | None | N/A | Car |
| 19 | LT | N/A | 2LT |
+-----+-------+------------------------------------+-----------------------------------------+
2SS被分类为SS,因为在
trim_level()
函数中,您将if键放入(行['trim']或行['SubModel']):
意思是“如果此键(SS)位于这些单元格中的任何一个,则将此键(SS)放入trim列中”-这正是发生的情况。SS键显然位于字符串中,该字符串满足if条件。更改IF语句以考虑多个键位于同一字符串中。在您的特殊情况下,如果同时找到SS和2S,听起来您希望2SS获胜。这里没有快速解决方法。你应该回去重新考虑它的设计。@ralston如果输入(行['Trim']或行['SubModel'])不正确,你对的解释就是错误的,这正是OP的问题。如果在第['Trim']行中键入或在第['SubModel']行中键入,则语句应类似于
。
+-----+-------+------------------------------------+-----------------------------------------+
| | TRIM | SubModel | Trim |
+-----+-------+------------------------------------+-----------------------------------------+
| 0 | SS | SS-EDITION | SS-EDITION(MANUAL 6 SPEED) Coupe 2-Door |
| 1 | ZL1 | ZL1 | ZL1 Coupe 2-Door |
| 2 | SS | N/A | SS TRANSFORMER |
| 3 | None | 1LT RS AUTO BLUETOOTH REAR CAM | N/A |
| 4 | LS | N/A | LS |
| 5 | SS | Camaro SS | Camaro SS |
| 6 | None | Dusk Edition | N/A |
| 7 | SS | Camaro SS W/ RS Pkg | Camaro SS W/ RS Pkg |
| 8 | SS | 2dr Coupe SS w/2SS | 2dr Coupe SS w/2SS |
| 9 | 1LT | 2dr Convertible LT w/1LT | 2dr Convertible LT w/1LT |
| 10 | LT | N/A | 2LT |
| 11 | 1LT | LT RS 6-SPD SUNROOF REAR CAM 20'S | 1LT Coupe 2-Door |
| 12 | SS | 2dr Convertible SS w/2SS | 2dr Convertible SS w/2SS |
| 13 | LT | 2dr Convertible LT w/2LT | 2dr Convertible LT w/2LT |
| 14 | LT | N/A | 2LT |
| 15 | LE | N/A | RARE ZL1 - LOW MILES |
| 16 | SS | 2SS AUTO LEATHER NAV HUD 20'S | SS Coupe 2-Door |
| 17 | SS | SS | SS Coupe 2-Door |
| 18 | None | N/A | Car |
| 19 | LT | N/A | 2LT |
+-----+-------+------------------------------------+-----------------------------------------+