Я немного изменил вашу функцию и использовал map(lambda x:)
вместо apply, поскольку мы работаем с серией, а не с полным фреймом данных. Также я добавил несколько дополнительных строк, чтобы предоставить примеры как для КБ, так и для МБ, и если ни один из них не присутствует:
example_df = pd.DataFrame({'Month':[0,1,2,3],
'Time':['15:32','16:42','17:11','15:21'],
'Path':['xxxxx','yyyyy','zzzzz','aaaaa'],
'Rate':['14.71Kb','18.21Mb','19.01Kb','Error_1']})
def case_1(value):
if value[-2:] == 'Kb':
return float(value[:-2])*1000
elif value[-2:] == 'Mb':
return float(value[:-2])*100000
else:
return np.nan
example_df['Rate'] = example_df['Rate'].map(lambda x: case_1(x))
Лог c для функции, если он заканчивается на Kb
, умножьте значение на 1000, иначе - если оно заканчивается на Mb
, умножьте значение на 100000, в противном случае просто верните NaN (потому что ни одно из двух условий не выполняется). Вывод:
Month Time Path Rate
0 0 15:32 xxxxx 14710.0
1 1 16:42 yyyyy 1821000.0
2 2 17:11 zzzzz 19010.0
3 3 15:21 aaaaa NaN