提取汇率并将数据存储在d中

2024-05-16 03:35:55 发布

您现在位置:Python中文网/ 问答频道 /正文

情况:

尝试使用python从web获取for循环和导入数据。 我在网上找到一个图书馆,可以提取大多数货币的汇率。你知道吗

我一直致力于创建一个函数,该函数将循环遍历一系列日期,并为每天提取值并存储在相应的单元格中。你知道吗

目标:

在过去的两年里,每天都要创建一个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汇率的示例


Tags: theto函数fromimportobjconvertdataframe
1条回答
网友
1楼 · 发布于 2024-05-16 03:35:55

试试这个

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提供了一种直接完成这项工作的方法,除了对它们两个进行迭代之外,这实际上可能会比较慢。你知道吗

相关问题 更多 >