提取货币汇率并将数据存储在 df 中

Extract currency rates and store the data in df

情况:

尝试使用 python 处理 for 循环并从 Web 导入数据。 我在网上找到了一个图书馆,可以提取大多数货币的汇率。

我坚持创建一个函数,该函数将循环遍历一系列日期并提取每一天的值并将其存储在适当的单元格中。

Objective:

创建一个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变量

中的日期获取加元到墨西哥比索汇率的例子

试试这个

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 提供了直接执行此操作的方法,除了迭代它们两个,这实际上可能更慢。