数字提取功能
Digit extraction function
我有一个 Pandas 系列,其中包含 16000 行以及一些公寓描述。
我试着写一个函数,它接受一个字符串并提取房间的数字。
某些行不包含有关房间的任何信息。
line_example = "Apartment · 121m² · 4 rooms · 2 parking lots"
def rooms_digit_extraction(line):
# extracts digit number of rooms
pattern = r"\d{1,2} room?s"
try:
rooms = re.findall(pattern, line) @ returns a list with rooms info if there are any['4 rooms' is case of example]
digit = [int(sub.split(' ')[0]) for sub in rooms] @ extracts the digit from rooms
except TypeError:
pass
return digit
my_pandas_series = my_pandas_series.map(lambda x: rooms_digit_extraction(x))
然后出现下一个错误:
UnboundLocalError: local variable 'digit' referenced before assignment
我的功能有什么问题?任何帮助将不胜感激!
谢谢!
您可以使用
my_pandas_series.str.extract(r'(\d+)\s*rooms?\b')
参见regex demo。
.str.extract
方法在输入字符串中搜索正则表达式匹配,returns 使用捕获组捕获的值。
(\d+)
- 捕获第 1 组:一个或多个数字
\s*
- 0+ 个空格
rooms?
- room
或 rooms
\b
- 单词边界。
我有一个 Pandas 系列,其中包含 16000 行以及一些公寓描述。 我试着写一个函数,它接受一个字符串并提取房间的数字。 某些行不包含有关房间的任何信息。
line_example = "Apartment · 121m² · 4 rooms · 2 parking lots"
def rooms_digit_extraction(line):
# extracts digit number of rooms
pattern = r"\d{1,2} room?s"
try:
rooms = re.findall(pattern, line) @ returns a list with rooms info if there are any['4 rooms' is case of example]
digit = [int(sub.split(' ')[0]) for sub in rooms] @ extracts the digit from rooms
except TypeError:
pass
return digit
my_pandas_series = my_pandas_series.map(lambda x: rooms_digit_extraction(x))
然后出现下一个错误:
UnboundLocalError: local variable 'digit' referenced before assignment
我的功能有什么问题?任何帮助将不胜感激!
谢谢!
您可以使用
my_pandas_series.str.extract(r'(\d+)\s*rooms?\b')
参见regex demo。
.str.extract
方法在输入字符串中搜索正则表达式匹配,returns 使用捕获组捕获的值。
(\d+)
- 捕获第 1 组:一个或多个数字\s*
- 0+ 个空格rooms?
-room
或rooms
\b
- 单词边界。