数字提取功能

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? - roomrooms
  • \b - 单词边界。