Я бы использовал функцию split
вместо шаблонов более длинных регулярных выражений в этом случае:
dataset['col1'] = dataset['col1'].str.split('\\').str[0]
или split
в float
тип данных:
dataset['col1'] = dataset['col1'].str.split('\\').str[0].astype(float)
Это преобразует эти значения на месте и не подвержено ошибкам. Он просто всегда берет первый элемент из результирующего массива в случае, если существует обратная коса sh.
Результат:
year col1
0 2001 10.563
1 2002 9.540
2 2003 4.674
3 2004 3.2754
4 2005 nan