Первый преобразовать столбец в число с плавающей точкой на astype
:
df['C'] = df['C'].astype(float).map(lambda n: '{:.2%}'.format(n))
Также решение должно быть упрощено:
df['C'] = df['C'].astype(float).map("{:.2%}".format)
EDIT:
Проблема в том, что в столбце есть некоторые нечисловые значения.
Заменить нечисловое значение на 0
:
print (df)
C
0 0.9977
1 0.1234
2 Covered fraction
df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0).map("{:.2%}".format)
print (df)
C
0 99.77%
1 12.34%
2 0.00%
Или удалить строки со следующими значениями:
df['C'] = pd.to_numeric(df['C'], errors='coerce')
df = df.dropna(subset=['C'])
df['C'] = df['C'].astype(float).map("{:.2%}".format)
print (df)
C
0 99.77%
1 12.34%