It seems to me that you need to first do , and then apply to :replace ,.float
df['total number'] = df.number1.str.replace(',','.').astype(float) *
df.number2.str.replace(',','.').astype(float) / 100
print (df)
number1 number2 total number
0 400 90 360.000
1 35,5 50 17.750
2 678 3,4 23.052
It is also possible to use mulwith div:
df.number1 = df.number1.str.replace(',','.').astype(float)
df.number2 = df.number2.str.replace(',','.').astype(float)
print (df)
number1 number2
0 400.0 90.0
1 35.5 50.0
2 678.0 3.4
df['total number'] = df.number1.mul(df.number2).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
number1 number2 NaN, fill_value:
print (df)
number1 number2
0 400 90
1 35,5 50
2 678 3,4
3 NaN 5.2
df.number1 = df.number1.str.replace(',','.').astype(float)
df.number2 = df.number2.str.replace(',','.').astype(float)
print (df)
number1 number2
0 400.0 90.0
1 35.5 50.0
2 678.0 3.4
3 NaN 5.2
df['total number'] = df.number1.mul(df.number2, fill_value=1).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
3 NaN 5.2 0.052
df['total number'] = df.number1.mul(df.number2, fill_value=0).div(100)
print (df)
number1 number2 total number
0 400.0 90.0 360.000
1 35.5 50.0 17.750
2 678.0 3.4 23.052
3 NaN 5.2 0.000