You could use pandas.to_numeric + numpy.where:
values = pd.to_numeric(df.Sale.str.replace("[.%]", "").str.replace(",", "."))
result = np.where(df.Sale.str.contains("%"), values / 100, values)
print(pd.Series(result))
Output
0 9455.0000
1 0.3465
2 23412.0000
3 3.2600
4 0.0350
dtype: float64
The line:
values = pd.to_numeric(df.Sale.str.replace("[.%]", "").str.replace(",", "."))
converts the strings to numeric values after some pre-processing, then:
result = np.where(df.Sale.str.contains("%"), values / 100, values)
basically divides the numbers by 100
if it was a percentage value.