Как ссылаться на имя dataframe как строку в цикле for? - PullRequest
0 голосов
/ 23 февраля 2019

Вот мой код.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import quandl

start = pd.to_datetime('2012-01-01')
end = pd.to_datetime('2017-01-01')



aapl = quandl.get('WIKI/aapl.11', start_date = start, end_date= end )
csco = quandl.get('WIKI/csco.11', start_date = start, end_date= end )
ibm = quandl.get('WIKI/ibm.11', start_date = start, end_date= end )
amzn = quandl.get('WIKI/amzn.11', start_date = start, end_date= end )

Это создает 4 кадра данных.Я хочу быть в состоянии достичь этого с помощью цикла for.

Вот как я представляю цикл for.

for i in [aapl,csco,ibm,amzn]:
    a = 'WIKI/'+ i + '.11'
    i = quandl.get(a, start_date=start, end_date=end)

Я бы хотел иметь возможность ссылаться на имя фрейма данных как строку в цикле для выполнения другихфункции, которые требуют имя кадра данных в виде строки.

Кто-нибудь поможет мне с этим или предложит альтернативный подход, который достигнет того же результата.Я надеюсь, что смогу сделать это таким образом, чтобы масштабирование до сотен итераций цикла.

Спасибо за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

Вы почти у цели!Все, что вам нужно сделать, это заключить элементы списка в строки.

Что вы делаете сейчас:

a = 'WIKI/'+ i + '.11'                  # Where i is an object, probably a pointer/instance

Что вам нужно сделать:

a = 'WIKI/'+ i + '.11'                  # Where i is a good-old-happy string

Итак, ваш код ваш код должен выглядеть примерно так:

import numpy as np
import pandas as pd


import matplotlib.pyplot as plt
import quandl

start = pd.to_datetime('2012-01-01')
end = pd.to_datetime('2017-01-01')


# You have to add Strings to calculate i (But, you are adding objects)
L = ["aap1", "csco", "ibm", "amzn"]
L_i = []
for i in L:
    a = 'WIKI/'+ i + '.11'
    i = quandl.get(a, start_date=start, end_date=end)
    # Then do whatever you want with the i-s : L_i.append(i)
0 голосов
/ 23 февраля 2019

Эквивалентно ответу GB, но без толкования словаря, если вы еще не знакомы с ним.

import pandas as pd
import quandl

start = pd.to_datetime('2012-01-01')
end = pd.to_datetime('2017-01-01')

data = {}

for key in ['aapl', 'csco', 'ibm', 'amzn']:
    name = 'WIKI/'+ key + '.11'
    data[key] = quandl.get(name, start_date=start, end_date=end)

# Then you can use it like
data['aapl'].DoSomething()

0 голосов
/ 23 февраля 2019
inames = ['aapl', 'csco', 'ibm', 'amzn']
data = {name: quandl.get('WIKI/'+ name + '.11', start_date=start, end_date=end) for name in inames}
...