У меня есть многоуровневый DataFrame с 36 записями: Это pandas DF с 36 уровнями (36 акций) . Прилагается к одной дате времени. Для всех, кому интересно, это вывод, который создается с помощью API Zipline или Quantopians Pipeline API. Так что я не контролирую, как создается информационный фрейм.
Как вы видите в DF, каждый уровень представлен эквити или акцией, например: Equity(1251 [CAJ])
Я пытаюсь выяснить, как извлечь символ тикера для каждый уровень в строковом формате и добавить их в список! Например, list = ['CAJ', 'CBT', 'GILD', ...]
, за которым следуют все другие акции, которые выплевывает программа.
Это вызвало у меня сильную головную боль, и я попытался продолжить:
result = df
asset_list = result.index.levels[1]
stocks = asset_list.get_level_values(0).unique()
Но это кажется, не работает, и я получаю что-то далеко, это может быть проблема с API, поскольку len(stocks)
обеспечивает значение 8830. Я даже не знаю, как это возможно.
Буду очень признателен за помощь в написании кода. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация с моей стороны.
Как упоминалось в ветке ниже, благодаря @sammywemmy, вот словарь первых 5 строк таблицы выше.
result.head().to_dict()
воспроизводит:
{'current ratio': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 1.921883,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 2.0836239999999999,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 3.1044160000000001,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 5.3676060000000003,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 1.5076229999999999},
'dividend yield': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 7.4899999999999993,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 5.3900000000000006,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 3.29,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 4.0599999999999996,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 3.04},
'interest coverage': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 227.99559500000001,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 4.5714290000000002,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 8.8230450000000005,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 9.5895290000000006,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 3.1692089999999999},
'marketcap': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 21652842873.0,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 1471969134.0,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 98467576445.0,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 9171245233.0,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 4308534238.0},
'payout ratio': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 138.62,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 63.009999999999998,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 59.719999999999999,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 65.930000000000007,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 55.530000000000001},
'pe_ratio': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 18.307486999999998,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 11.858447,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 18.533175,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 16.528395,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 18.540130000000001},
'price': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): 19.949999999999999,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): 25.969999999999999,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): 78.210000000000008,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): 67.060000000000002,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): 85.480000000000004},
'sector': {(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1251 [CAJ])): True,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(1315 [CBT])): True,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3212 [GILD])): True,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3460 [HAS])): True,
(Timestamp('2020-04-06 00:00:00+0000', tz='UTC', offset='C'),
Equity(3798 [IDA])): True}}