Pythonの正規表現を使用して文字列から特定箇所の抽出をしたい


Outlookのメール本文より必要な情報のみを抽出したいと考えております。  
抽出したい部分に数字(最大で5桁の整数と少数第1位)と記号が混在していて現在数字のみ抽出できている状態です。  
どちらにでも対応できるような正規表現の書き方をご教示いただけると幸いです。

[code]

    import pandas as pd
    import re
    
    data = """名前:\r\nsatou:\r\n前回の点数 : 14686.5 点\r\n今回の点数 : 8992.5 点\r\n\r\n名前:\r\ntanaka:\r\n前回の点数 : 778.5 点\r\n今回の点数 : 82.5 点\r\n\r\n名前:\r\nsuzuki:\r\n前回の点数 : - 点\r\n今回の点数 : 9.5 点\r\n\r\n"""
    
    ptn = r"名前:\r\n(.*?):\r\n前回の点数\s:\s*([\d.]+)\s*点\r\n今回の点数\s:\s*([\d.]+)\s*(\w+)"
    output_data = pd.DataFrame(re.findall(ptn, data, re.M | re.DOTALL))
    
    output_data = output_data.rename(columns={0:"名前", 1:"前回の点数", 2:"今回の点数", 3:"単位"})
    
[/code]



[code]

    import pandas as pd
    import re
    
    pd.set_option('display.unicode.east_asian_width', True)
    
    data = """名前:\r\nsatou:\r\n前回の点数 : 14686.5 点\r\n今回の点数 : 8992.5 点\r\n\r\n名前:\r\ntanaka:\r\n前回の点数 : 778.5 点\r\n今回の点数 : 82.5 点\r\n\r\n名前:\r\nsuzuki:\r\n前回の点数 : - 点\r\n今回の点数 : 9.5 点\r\n\r\n"""
    
    output_data = (
        pd.DataFrame([
            m.groupdict() for m in re.finditer(
                r'名前:\r\n(?P<名前>.+?):\r\n'
                r'前回の点数\s:\s*(?P<前回の点数>.+?)\s*点\r\n'
                r'今回の点数\s:\s*(?P<今回の点数>.+?)\s*'
                r'(?P<単位>\w+)(?=\r\n)', data)]))
    
    print(output_data)
    
    #
         名前 前回の点数 今回の点数 単位
    0   satou    14686.5     8992.5   点
    1  tanaka      778.5       82.5   点
    2  suzuki          -        9.5   点
    
[/code]

