代码之家  ›  专栏  ›  技术社区  ›  polonius11

熊猫数据帧的动态融合

  •  2
  • polonius11  · 技术社区  · 8 年前

    我正在用python编写一个程序,它要求用户选择5个符号。用户选择五个符号后,程序将提供各种输出。

    该程序目前的工作方式是创建五个唯一命名的熊猫数据帧,然后将它们连接到一个帧中,如下所示。

    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 回复  |  直到 8 年前
        1
  •  2
  •   jezrael    8 年前

    我认为需要 add_suffix concat

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