我有一个熊猫列,看起来像这样:
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数量开始或结束的地址中。