python - Pandas 数据框的动态合并

标签 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)

我想改进该程序,以便用户可以选择任意数量的股票,并且该程序将构建一个 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/

相关文章:

python - 如何在Python中求解阶跃函数?

python - Pandas :删除值等于零的行

javascript - 如何操作 append 内容? jQuery

ios - 数组 'contains()' 检查未能检测到舍入值

python - 如何将 python datetime(ISO) 截断为小时?

python - 使用 Python 在 .txt 文件的每一行中 append 特定字符串

python - 在 django 中使用 block 内容时 <a> 标签有问题

Python:如何使用getattr获取对象的属性?

python - 你如何处理不能一起使用的选项(使用 OptionParser)?

python - 从列表创建 lambda 函数的方法