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 空格,对于那些以手数开头或结尾的地址会出现这种情况。
我有一个 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 空格,对于那些以手数开头或结尾的地址会出现这种情况。