数字提取功能



我有一个有16000行的Pandas系列,其中有一些公寓的描述。我试着写一个函数,用一个字符串提取房间的位数。有些行不包含任何有关房间的信息。

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演示。

.str.extract方法在输入字符串中搜索正则表达式匹配,并返回使用捕获组捕获的值。

  • (d+)-捕获组1:一个或多个数字
  • s*-0+空白
  • rooms?-roomrooms
  • b—字边界

相关内容

  • 没有找到相关文章

最新更新