У меня есть список компании тикер'S:Создать DataFrame из петли с функцией Bloomberg
df = {'Ticker': ['AVON LN EQUITY', 'GFS LN EQUITY'], 'Value': [1., 2.]}
df = pd.DataFrame(df)
Я использую BLPAPI обертку, https://github.com/alex314159/blpapiwrapper
С помощью этого я хотел бы получить DataFrame, из всех цены на ежемесячной основе. Для этого я использую класс BLP и функцию BDH. Настройки ниже (чем дольше версия находится в ссылке):
def bdh(self, strSecurity='SPX Index', strData='PX_LAST', startdate=datetime.date(2013, 1, 1), enddate=datetime.date(2016, 9, 6),
adjustmentSplit=False, periodicity='MONTHLY', strOverrideField='', strOverrideValue=''):
для простоты я создала мини-функцию:
def bloom_func(x, func):
bloomberg = BLP()
return bloomberg.bdh(x, func, strOverrideField='BEST_FPERIOD_OVERRIDE', strOverrideValue='1GY')
bloomberg.closeSession()
Используя этот я могу получить DataFrame для одного капитала.
Price = bloom_func('VOD LN EQUITY', 'PX_LAST')
print (c)
который работает.
Однако, когда я пытаюсь запустить это в через 2 компаний, использующих:
df1 = pd.concat([df.apply(lambda x: bloom_func(x)) for p in df['Ticker']])
я получаю ValueError: Форма переданных значений (2, 0), индексы следует (2, 2).
IIUC вам нужно 'df1 = pd.concat ([DF применить [ 'Код']. (Bloom_func)])' – jezrael