изменить часть данных в столбце с % на десятичную дробь

есть столбец с данными, в котором часть представлена в виде десятичной дроби, часть число со знаком %. Необходимо привести все данные к виду десятичной дроби, то есть удалить знак % и разделить на 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
→ Ссылка