我正在用python编写一个程序,要求用户选择5个符号。用户选择五个符号后,程序将提供各种输出。
程序当前的工作方式是创建五个唯一命名的pandas数据帧,然后将它们连接到一个帧中,如下所示。
data1 = pdr.DataReader(symbol, 'iex', start, end)
data2 = pdr.DataReader(symbol, 'iex', start, end)
data3 = pdr.DataReader(symbol, 'iex', start, end)
data4 = pdr.DataReader(symbol, 'iex', start, end)
data5 = pdr.DataReader(symbol, 'iex', start, end)
我想改进该程序,以便用户可以选择任意数量的股票,并且该程序将构建一个熊猫数据框。我认为这将类似于SQL数据库中的追加查询。出于这个问题的目的,我将符号列表的大小保持不变。
import pandas
import pandas_datareader as pdr
from datetime import datetime
start = datetime(2018, 5, 1)
end = datetime(2018, 5, 31)
symbol_list = ['IVV', 'EWH', 'INDY', 'EWG', 'ENZL']
for symbols in Symbol_List:
symbol = symbols
data = pdr.DataReader(symbol, 'iex', start, end)
在此处添加一些内容,以将新数据附加到主数据帧中。
该附录将需要重写列名称以包括符号,为新数据添加列,并确保数据索引对齐。
我在想类似的东西:
data.rename(columns={'high': 'high' + symbol, 'low': 'low' + symbol}, inplace=True)
pd.merge(masterdata, data, on='index')
答案 0 :(得分:2)
我认为需要add_suffix
并具有列表理解能力和concat
才能加入在一起:
data = pd.concat([pdr.DataReader(s, 'iex', start, end).add_suffix(s) for s in symbol_list], axis=1)