次のような、部屋の階数を示すデータがあります。
['2', 'B1', '23-49', 'M2']
B1は地下一階を、23-49は、23階を、M2は不明なので、欠損値にしたいと考えています。

[2, -1, 23, NaN]

しかし、現在は、全てNanになってしまいます。
文字列の置換方法の理解が足りないためと思いますが、
ご教示下さいますとありがたいです。
よろしくお願いします。

import pandas as pd
import numpy as np
import re

df = pd.DataFrame(
    {'kai': ['2', 'B1', '23-49', 'M2']},
    index=[1, 2, 3,4])

df['kai']=df['kai'].replace('23-49', r'(\d)')
df['kai']=df['kai'].str.replace(r'B(\d*)', -\d*)
df['kai']=df['kai'].str.replace(r'M(\d*)', np.nan)

print(df)