изменить часть данных в столбце с % на десятичную дробь
есть столбец с данными, в котором часть представлена в виде десятичной дроби, часть число со знаком %. Необходимо привести все данные к виду десятичной дроби, то есть удалить знак % и разделить на 10. Какой код написать? пробовала через функцию, но что-то похоже делаю неверно

Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
если это простой список, то сделать можно так:
a = ['1.3', '5.6', '90%', '2.4']
res = [str(int(x.rstrip('%'))/10) if '%' in x else x for x in a]
print(res)
При этом все значения в списке останутся строковыми.
['1.3', '5.6', '9.0', '2.4']
Либо так:
res = [int(x.rstrip('%'))/10 if '%' in x else float(x) for x in a]
print(res)
Теперь все значения станут вещественными числами:
[1.3, 5.6, 9.0, 2.4]
Если это столбец датафрейма
rating
0 1.3
1 5.6
2 90%
3 2.4
то:
df = df.where(~df["rating"].str.contains("%"), df["rating"]
.str.strip("%").astype(float)/10, axis=0)
получите столбец типа object:
rating
0 1.3
1 5.6
2 9.0
3 2.4