我有一个多层次的DataFrame,有36个条目:这是一只熊猫DF,有36个等级(36只)。一次约会的时间。对于任何好奇的人来说,这都是通过使用Zipline或Quantopies管道API创建的输出。因此,我对如何创建dataframe没有太多的控制。
正如您在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}}发布于 2020-04-08 01:10:50
将regular expression与str.extract结合使用
# I'm not sure of the column name, but it appears to be
# the second column if you reset the index
df.reset_index().iloc[:, 1].str.extract(r'\[([A-Z_]+)\]')https://stackoverflow.com/questions/61091760
复制相似问题