Pandas 找到匹配的子字符串并拆分它们

Pandas find matching sub-strings and split on them

我有一个 pandas 列,如下所示:

0                         LOT 8 BLK 32 MISSIONARY HEIGHTS 
1                          LTS 31-39 & PT 30, 15-22 LEWIS 
2                                          LT 2 DEPOT SUB
....

我想从中提取批号,但有时它们被拼写为“LOT”、“LTS”或“LT”。我想将批号提取到一个新列中。所以,对于上面的例子,我会:

         df['Lot']
0             8
1           31-39
2             2

我该怎么做?请指教

我们可以在这里使用str.extract

df["Lot"] = df["Address"].str.extract(r'\b(?:LOT|LTS?) (\d+(?:-\d+)*)')

这里 demo 表明正则表达式提取逻辑正在运行。

要从地址中删除这些手数,您可以使用 str.replace:

df["Other"] = df["Address"].str.replace(r'\s*(?:LOT|LTS?) \d+(?:-\d+)*\s*', ' ').str.strip()

strip() 的最后一次调用是删除悬挂的 leading/trailing 空格,对于那些以手数开头或结尾的地址会出现这种情况。