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+)*)')

下面是一个演示,显示正则表达式提取逻辑正在工作。

要从地址中删除这些批次值,您可以使用str.replace:

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

strip()的最后调用是删除悬空的前导/尾随空格,这将发生在那些以lot数量开始或结束的地址中。

最新更新