下载数据并附加到不同的数据帧

时间:2017-05-24 07:08:04

标签: python pandas dataframe quantitative-finance

我正在尝试使用其API从Oanda下载货币对数据 我能够创建一个从Oanda下载一种货币的代码

我有两个问题

首先,根据我从基本python的理解,我必须首先创建一个货币对列表,然后我循环遍历列表中的每一对以下载该对的数据,然后我为每个对添加每个单独的数据帧

# Input for downloading data using Oanda API
d1 = '2017-05-18'
d2 = str(datetime.today().strftime('%Y-%m-%d'))
list = ['USD_JPY','EUR_USD']
df = pd.DataFrame({'Pairs': list})


gbl = globals()
for i in list:
    gbl['df_'+i] = df[df.Pairs==i]


# Downloading Data

for pair in list:

    data = oanda.get_history(instrument=list, start=d1, end=d2, granularity='D')
    df_EUR_USD= df_EUR_USD.append(pd.DataFrame(data['candles']))

我能够为列表中的每一对创建数据库,但是我无法下载数据,然后将这些下载的数据附加到每个单独的数据帧。

第二个问题,它是关于熊猫的一般处理。这是处理所有这些数据的最佳方式吗?我的想法是下载这些数据并将它们附加到单个数据帧,然后运行循环遍历这些数据帧列表以执行一些数学函数,最后再次通过数据帧列表运行另一个循环以提取计算数据并将所有数据追加到一个新的数据帧。 这是最好的方法吗?或者有更好的方法来处理这种情况。

1 个答案:

答案 0 :(得分:1)

我认为你需要:

d1 = '2017-05-18'
#strftime return string, so cast is not necessary
d2 = pd.datetime.today().strftime('%Y-%m-%d')
L = ['USD_JPY','EUR_USD']

dfs = []
for pair in L:
    #return in loop DataFrame (not tested, because no access to oanda)
    data = oanda.get_history(instrument=pair, start=d1, end=d2, granularity='D')
    #append column to list
    dfs.append(data['candles'])

#create new DataFrame with columns by L
df = pd.concat(dfs, axis=1, keys=L)

如果需要输出dict

dfs = {}
for pair in L:
    data = oanda.get_history(instrument=pair, start=d1, end=d2, granularity='D')
    #add data to dict
    dfs[pair] = data['candles']

print (dfs['USD_JPY'])