2012-08-23 15 views
1

我有一个数据帧“DF”具有多级指数(“STK_ID”,“RPT_Date”)的多级索引中的一个系列:如何获得在python熊猫

sales  cogs net_pft 
STK_ID RPT_Date         
600809 20120331 2214010000 509940000 492532000 
     20111231 4488150000 1077190000 780547000 
     20110930 3563660000 850789000 707537000 
     20110630 2894820000 703883000 658625000 

一些代码:

>>> df.index.names 
['STK_ID', 'RPT_Date'] 

现在我想要得到的RPT_Date列的一系列值(20120331,20111231,20110930,20110630)由:

>>> df['RPT_Date'] # not work 

如何获得这些数据呢?

+0

这意味着DF [ 'RPT_Date']无法获取RPT_Date列的值。其实,python返回“KeyError:'没有项目名为RPT_Date'” – bigbug

+0

'RPT_Date'不是你的DataFrame的列,所以这是正常的,这会抛出一个KeyError。 'RPT_Date'是索引中的一个级别,不能通过常用列索引访问。 –

回答

2

我修好了。

df.index.get_level_values('RPT_Date') 

array([20120331, 20111231, 20110930, 20110630, 20110331, 201, 
     20100930, 20100630, 20100331, 20091231, 20090930, 20090630, 
     20090331, 20081231, 20080930, 20080630, 20080331, 20071231, 
     20070930, 20070630, 20070331, 20061231, 20060930, 20060630, 
     20060331], dtype=object) 

我觉得语法相当难看,为什么熊猫的开发商不接受df['RPT_Date']的简单的方法?

1

,如果你这样做,将工作:

df2 = df.reset_index() 
df2['RPT_Date']