Не изменяется результат при умножении float на float python pandas
Есть датафрейм (df), получаемый посредством выгрузки его в формате JSON из Binance API. Затем, я изменяю значения ячеек в столбце "unitPrice" на float при помощи Pandas. После этого, я пытаюсь увеличить значения каждой ячейки столбца "unitPrice" на 0.1%, однако это не срабатывает. Затем я выгружаю этот файл в .xlsx формат, с переименованием столбцов и удалением ненужных. Вопрос - почему не срабатывает увеличение значений ячеек в столбце "unitPrice"?
Прилагаю весь код:
client = Client(api_key, secret_key)
try:
response = client.c2c_trade_history("BUY")
df = pd.json_normalize(response, "data")
print(df["unitPrice"])
df["unitPrice"] = df["unitPrice"].astype(float)
df["unitPrice"] = df["unitPrice"] + (df["unitPrice"] // 100 * 0.1)
df["orderStatus"] = "COMPLETED"
df.rename(columns={
"orderNumber": "Номер ордера",
"advNo": "Номер объявления",
"tradeType": "Тип ордера",
"asset": "Покупаем",
"fiat": "Продаем",
"amount": "Куплено",
"totalPrice": "Продано",
"unitPrice": "Курс",
"commission": "Комиссия"
}, inplace=True)
df.drop(columns=[
"createTime",
"advertisementRole",
"fiatSymbol",
"counterPartNickName",
"orderStatus"
]).to_excel(
"Результат.xlsx",
sheet_name="Основной лист",
index="False"
)
print("Успех! Ваш файл был загружен!")
print(df["Курс"])
except ClientError as error:
logging.error(f"Найдена ошибка. Статус: {error.status_code}, Код: {error.error_code}, Сообщение: {error.error_message}")
Серия значений ДО увеличения на 0.1% (строка 5 - print):
0 39.43 1 39.43 2 39.35 3 39.32 4 39.3 5 39.3 6 39.3 7 39.3 8 39.37 9 39.37 10 39.37
Серия значений ПОСЛЕ увеличения на 0.1% (строка 32 - print):
0 39.43 1 39.43 2 39.35 3 39.32 4 39.3 5 39.3 6 39.3 7 39.3 8 39.37 9 39.37 10 39.37
P.S.: код успешно создаёт файл без каких-либо ошибок и я могу спокойно открыть Excel-таблицу, однако, значения unitPrice какими они были при выгрузке из API, такими они и остались после форматирования. Без изменений вовсе.
Ответы (1 шт):
Числа в вашем df меньше 100, поэтому при целочисленном делении их на 100 вы получаете 0. который умножаете на 0.1 (снова получая 0) и прибавляете этот ноль к исходным данным
Попробуйте заменить свои
df["unitPrice"] = df["unitPrice"] + (df["unitPrice"] // 100 * 0.1)
на
df["unitPrice"] = df["unitPrice"]* 1.001