首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多级DataFrame中提取索引作为列表中的字符串

从多级DataFrame中提取索引作为列表中的字符串
EN

Stack Overflow用户
提问于 2020-04-08 01:01:42
回答 1查看 43关注 0票数 0

我有一个多层次的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行的字典。

代码语言:javascript
复制
result.head().to_dict()

复制:

代码语言:javascript
复制
{'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}}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 01:10:50

regular expressionstr.extract结合使用

代码语言:javascript
复制
# 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_]+)\]')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61091760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档