Я читаю курсы обмена.
Но мне не нужна длинная значимая фигура.
Только 3-4 сига фиг будет необходимо.
Поскольку все курсы валют от доллара США к другим валютам отличаются, я не могу сделать это с помощью десятичных знаков. (напр. камбоджийский Riel KHR дал бы мне 4083.000 вместо 4083)
def round_to_1(x):
return round(x, 4-int(floor(log10(abs(x))))-1)
df['Exchange Rate'] = df['Exchange Rate'].apply(round_to_1)
Сделал трюк, но оставляет нули в конце.
И попробовал
df['Exchange Rate'] = df['Exchange Rate'].astype(str).replace('\.0', '', regex=True)
, чтобы решить проблемы, но, похоже, не работает идеально.
Также слышал, что, хотя это не большие данные, метод применения медленный.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
from math import log10, floor
def round_to_1(x):
return round(x, 4-int(floor(log10(abs(x))))-1)
res = requests.get("https://www.exchange-rates.org/currentRates/P/USD")
soup = BeautifulSoup(res.content,'lxml')
table = soup.find_all('table', {"class":"table table-fixedX table-exchange table-striped table-hover"})
df = pd.read_html(str(table))[0]
df['Convert To'] = df['Convert To'].str[:-3] + ' ' + df['Convert To'].str[-3:]
df['Exchange Rate'] = df['Exchange Rate'].apply(round_to_1)
#df['Exchange Rate'] = df['Exchange Rate'].astype(str).replace('\.0', '', regex=True)
df
Токовый выход
![current output](https://i.stack.imgur.com/5G2Pf.png)
Но ожидаемый результат -
![expected output](https://i.stack.imgur.com/DQ4Fe.png)
Есть ли лучший / эффективный способ иметь 4-сиг сигнал вместо функции применения?
Как мне избавиться от 0 в конце?