Демо:
In [58]: df
Out[58]:
col
0 123.456
1 78M
2 0.5B
In [59]: d = {'B': 10**9, 'M': 10**6}
In [60]: df['new'] = \
...: df['col'].str.extract(r'(?P<val>[\d.]+)\s*?(?P<mult>\D*)', expand=True) \
...: .replace('','1') \
...: .replace(d, regex=True) \
...: .astype(float) \
...: .eval('val * mult')
...:
In [61]: df
Out[61]:
col new
0 123.456 1.234560e+02
1 78M 7.800000e+07
2 0.5B 5.000000e+08