我在 pandas 数据框中有一列,如下所示。列名是 ABC

ABC
Fuel
FUEL
Fuel_12_ab
Fuel_1
Lube
Lube_1
Lube_12_a
cat_Lube

现在我想使用下面的正则表达式替换此列中的值
ABC
Fuel
FUEL
Fuel
Fuel
Lube
Lube
Lube
cat_Lube

我们如何在 pandas 数据帧中进行这种类型的字符串匹配。

最佳答案

lubefuel 使用正向后视,同时忽略大小写。

import re
import pandas as pd

pat = re.compile('(?<=lube|fuel)_', re.IGNORECASE)

df.assign(ABC=[re.split(pat, x, 1)[0] for x in df.ABC])

        ABC
0      Fuel
1      FUEL
2      Fuel
3      Fuel
4      Lube
5      Lube
6      Lube
7  cat_Lube

10-07 13:43