我正在用 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)
我想改进该程序,以便用户可以选择任意数量的股票,并且该程序将构建一个 pandas 数据框。我认为它类似于 SQL 数据库中的 append 查询。为了解决这个问题,我将符号列表的大小保持静态。
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)
在此处添加一些内容以将新数据 append 到主数据框中。
追加需要重写列名称以包含符号,添加新数据的列,并确保数据索引对齐。
我在想这样的事情:
data.rename(columns={'high': 'high' + symbol, 'low': 'low' + symbol}, inplace=True)
pd.merge(masterdata, data, on='index')
最佳答案
我认为需要add_suffix
具有列表理解和 concat
一起加入:
data = pd.concat([pdr.DataReader(s, 'iex', start, end).add_suffix(s) for s in symbol_list], axis=1)
关于python - Pandas 数据框的动态合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011390/