Иногда строковые числа в моих DataFrames содержат запятые, представляющие либо десятичную, либо отмечающую тысячу, а некоторые - нет. Фрейм данных - это пример диапазона ценовых форматов, которые я получаю через API и которые зависят от валюты. Это цены, а десятичные дроби всегда будут равны 2. Поэтому мне нужно вывести строковые цены в число с плавающей точкой, чтобы я мог их суммировать или разделить на другие кадры данных или использовать их для построения графиков. Я создал al oop для их замены, но есть ли более быстрый способ сделать это без l oop?
Мой DataFrame и рабочий l oop выглядит следующим образом:
data = {'amount': ['7,99', '6,99', '9.99', '-6,99', '1,000.00']}
df = pd.DataFrame(data)
fees = []
sales = []
for items in df['amount']:
if items[-7:-6] == ',':
items = float(items.replace(',', '').replace(' ',''))
if items[-3:-2] == ',':
items = float(items.replace(',', '.').replace(' ',''))
items = float(items)
if items <= 0:
fees.append(items)
else:
sales.append(items)
Я пытался сделать это без l oop, но не могу понять, где я ошибся.
df["amount"] = np.where((df['amount'][-7:-6] == ','),
df["amount"][-7:-6].str.replace(',', '').replace(' ',''),
df["amount"])
df["amount"] = np.where((df['amount'][-3:-2] == ','),
df["amount"][-3:-2].str.replace(',', '').replace(' ',''),
df["amount"])
Любая помощь будет высоко ценится. Заранее спасибо