我想使用 Forex-python 模块根据特定日期(根据数据框中的日期,上个月的最后一天)将各种货币的金额转换为特定货币(“DKK”)
这是我的代码的结构:
pd.DataFrame(data={'Date':['2017-4-15','2017-6-12','2017-2-25'],'Amount':[5,10,15],'Currency':['USD','SEK','EUR']})
def convert_rates(amount,currency,PstngDate):
PstngDate = datetime.strptime(PstngDate, '%Y-%m-%d')
if currency != 'DKK':
return c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
,date_obj=PstngDate - timedelta(PstngDate.day))
else:
return amount
以及带有转换后金额的新列:
df['Amount, DKK'] = np.vectorize(convert_rates)(
amount=df['Amount'],
currency=df['Currency'],
PstngDate=df['Date']
)
我收到 RatesNotAvailableError“货币汇率源未就绪” 知道什么会导致这种情况吗?它以前处理过少量数据,但我的真实 df 中有很多行......
我在convert.py(forex-python的一部分)中插入了一个小打印语句来调试它。
print(response.status_code)
目前我收到:
502
阅读这些有关 HTTP 502 错误的线程:
https://www.lifewire.com/502-bad-gateway-error-explained-2622939
这些错误完全独立于您的特定设置, 这意味着您可以在任何浏览器、任何操作系统上看到它 系统以及任何设备上。
502 表示当前该 API 用于向我们提供所需数据的基础设施存在问题。由于我自己也需要数据,我将继续监控此问题并更新我在该网站上的帖子。
Github 上已经有一个关于此问题的问题:
您的错误意味着图书馆收到了针对您的请求的非 200 响应代码。这可能意味着该网站已关闭,或者它会暂时阻止您,因为您正在向其发送请求。
尝试将对
c.convert
的调用替换为以下内容:
from time import sleep
def try_convert(amount, currency, PstngDate):
success = False
while success == False:
try:
res = c.convert(base_cur=currency,dest_cur='DKK',amount=amount \
,date_obj=PstngDate - timedelta(PstngDate.day))
except:
#wait a while
sleep(10)
return res
或者更好的是,使用像退避这样的库,为您重试:
我制作了一个用于汇率的 API(时不时地更改软件包有点沮丧,因为它们停止工作并依赖于其他人):
您不需要安装任何第三方依赖项,我在上面的链接中提供了如何使用它的示例。