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                                     |
+-----+-------+------------------------------------+-----------------------------------------+