情况:
尝试使用for循环访问并使用python从Web导入数据。 我在网上找到了一个图书馆,可以提取大多数货币的汇率。
我一直致力于创建一个可以遍历一系列日期并每天提取值并将其存储在其适当单元格中的函数。
目标:
在过去两年中每天创建一个DataFrame
,其基值加元和每天几种转换的货币。
我尝试过的事情:
from forex_python.converter import CurrencyRates
from datetime import .datetime, timedelta
import pandas as pd
c = CurrencyRates()
# 4. store information into a dataframe
den = "CAD" # base currency
cols = ["date", "CAD", "MXN", "DKK", "INR", "SGD", "JPY"] # currencies to convert to
df = pd.DataFrame(columns=cols) # create df structure
sDate = datetime.datetime(2018, 1, 1, 16, 30, 30, 000000) # start date
eDate = datetime.today() - timedelta(1) # end date
amount = 1 # amount to convert
"""Loop through each day between the start to end date (once a day at the same time) and extract
the rate for each currency and store the data in their respective column"""
c.convert('CAD','MXN',1000,date_obj)
以下是示例c.convert('CAD','MXN',1,date_obj)
,该示例是使用存储在date_obj
变量中的日期将CAD转换为MXN汇率的示例
答案 0 :(得分:1)
尝试
from forex_python import converter
import datetime
import pandas as pd
rrc = converter.CurrencyRates()
keys= [*rrc.get_rates('CAD').keys(),]
numdays = 365 * 2
base = datetime.datetime(2019, 7,12)
date_list = [base - datetime.timedelta(days=x) for x in range(0, numdays)]
df = pd.DataFrame(columns =keys + ['date'])
def append_data(t) :
global df
try :
dic = rrc.get_rates('CAD',t)
dic['date'] = t
r = pd.DataFrame(dic, index = [0])
df = df.append(r, ignore_index= True)
except :
pass
for i,t in enumerate(date_list[::-1]):
append_data(t)
在此示例中,我只获取了所有货币,因此您可以通过指定实际列来进行裁剪,例如,如果您想要[AUD, USD]
,则可以这样做
df = df.loc[:,['AUD', 'USD', 'date']]
除了迭代其中的两个(实际上可能会更慢)之外,我不认为API提供了直接执行此操作的方法。