使用Python的熊猫库,我导入了一个csv并将多个列设置为我的索引。出乎意料的是,当我显示数据框时,索引列不再存在,我不能使用索引列作为过滤器选项。谷歌告诉我,当我设置我的索引时,我应该将'drop'设置为False。这让我想知道,如果我错误地认为熊猫指数与SQL索引类似。在熊猫中使用索引列进行查看或过滤?
说我的数据看起来像这样(为股市上涨简化虚拟为例):
date, exchange, symbol, low, high, open, close, last
date
,exchange
和symbol
足以唯一标识一行。
首先,创建索引有什么意义?它会加快查找速度,还是会增加一些对堆栈/叠加/枢轴/ groupby等有用的语义信息?它是否会减少内存使用量?
为什么日期,交换和符号移出数据框(并移动到索引系列?)?将它们放在数据框中,我可以将它们作为df [df.symbol =='MSFT']进行过滤,是否有意义?我想'放弃'解决了这个问题,但事实是这不是默认意味着我误解了这里的某些东西。
如果你还没有看看[indexing docs](http://pandas.pydata.org/pandas-docs/stable/indexing.html)。对于你的'df [df.symbol =='MSFT']'示例,它将是'df.loc ['MSFT']' – TomAugspurger 2014-09-18 16:51:35
@TomAugspurger你链接到的文档对于多索引是不清楚的,它们引用一个文本基于(实验)的查询语言。请求符号=='MSFT AND exchange =='BATS'的数据的惯用方式是什么? – Shahbaz 2014-09-18 17:32:09
'df.loc [('MSFT','BATS')]',假设这是您的MultiIndex的顺序。给它一些时间来学习,你会发现它非常直观。 但我认为文档回答了你原来的问题:“创建索引的意义何在?” 1.识别数据,2.对齐3.获取并设置 – TomAugspurger 2014-09-18 19:10:00