动态合并熊猫数据框

时间:2018-06-24 15:36:17

标签: python pandas append

我正在用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')

1 个答案:

答案 0 :(得分:2)

我认为需要add_suffix并具有列表理解能力和concat才能加入在一起:

data = pd.concat([pdr.DataReader(s, 'iex', start, end).add_suffix(s) for s in symbol_list], axis=1)