Динамическое объединение панелей данных Pandas - PullRequest
0 голосов
/ 24 июня 2018

Я пишу программу на 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 Ответ

0 голосов
/ 24 июня 2018

Я думаю, что нужно add_suffix с пониманием списка и concat для объединения:

data = pd.concat([pdr.DataReader(s, 'iex', start, end).add_suffix(s) for s in symbol_list], axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...