我有一个有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?
-room
或rooms
b
—字边界