Не получается умножить float на float
Есть датафрейм (df), полученный от Binance-API через импорт binance-python-connector в формате JSON, в котором хранятся float-значения (курс обмена), а также небольшой код, меняющий значения ячеек в столбце "unitPrice", умножая его на 0.1%:
response = client.c2c_trade_history("BUY")
df = pd.json_normalize(response, "data")
df["unitPrice"]=df.unitPrice*1.1
Выполнение данного кода приводило к ошибке:
can't multiply sequence by non-int of type 'float'
Я попытался поменять значения в столбце "unitPrice" на float, однако, прочитав заново ошибку, понял, что сделал абсолютно то же, что и привело к этой ошибке. Всё же прикреплю попытку:
response = client.c2c_trade_history("BUY")
df = pd.json_normalize(response, "data")
df["unitPrice"].astype(float)
df["unitPrice"]=df.unitPrice*1.1
Код ошибки идентичный:
can't multiply sequence by non-int of type 'float'
ВАЖНАЯ РЕМАРКА: Если попытаться изменить вид данных на integer в этом столбце, то это изменит и сам курс обмена, что мне категорически не нужно. Мне нужно получить именно float-значение с умножением на 0.1%.
Ответы (1 шт):
Воспроизведение ошибки. Предположим что датафрейм содержит не сами вещественные числа, а строки с изображениями вещественных чисел:
import pandas as pd
df = pd.DataFrame(data={'unitPrice': ['1.', '2.']})
print(df)
print(df['unitPrice'] * 1.1)
$ python temp.py unitPrice 0 1. 1 2. Traceback (most recent call last): ... TypeError: can't multiply sequence by non-int of type 'float'
Ошибка проявляется так как строки умножаются на вещественный коэффициент. Исправление состоит в приведении типа. Приведённые значения присваиваются обратно тому же столбцу:
import pandas as pd
df = pd.DataFrame(data={'unitPrice': ['1.', '2.']})
print(df)
df['unitPrice'] = df['unitPrice'].astype(float)
print(df)
print(df['unitPrice'] * 1.1)
$ python temp.py unitPrice 0 1. 1 2. unitPrice 0 1.0 1 2.0 0 1.1 1 2.2 Name: unitPrice, dtype: float64
Умножение работает.