2015-08-15 67 views
1

我是新来的使用Python熊猫,并有以下脚本从Excel文件中拉时间系列数据,设置日期=指数,然后将要执行各种计算数据按日期参考。脚本:Python中的日期范围索引熊猫

df = pd.read_excel("myfile.xls") 
df = df.set_index(df.Date) 
df = df.drop("Date",1) 
df.index.name = None 
df.head() 

,它的输出(给你的数据的意义上)是:

   Px1  Px2  Px3 Px4  Px5  Px6   Px7  
2015-08-12 19.850000 10.25 7.88 10.90 109.349998 106.650002 208.830002 
2015-08-11 19.549999 10.16 7.81 10.88 109.419998 106.690002 208.660004 
2015-08-10 19.260000 10.07 7.73 10.79 109.059998 105.989998 210.630005 
2015-08-07 19.240000 10.08 7.69 10.92 109.199997 106.430000 207.919998 
2015-08-06 19.250000 10.09 7.76 10.96 109.010002 106.010002 208.350006 

当我尝试检索数据基于像df.loc['20150806']一个日期的作品,但是当我尝试检索像df.loc['20150806':'20150812']这样的切片我返回Empty DataFrame

同样,索引是D型细胞= 'datetime64 [NS]',长度= 1412,DateTimeIndex FREQ =无,TZ =无

就像我说,我的最终目标是要能够组数据按日,月,年,不同时期等进行计算,并对数据进行计算。我想给这方面,但甚至不想去那个在这里,因为我清楚地停留在一些更基本的 - 也许是误解如何与DateTimeIndex

谢谢操作。

编辑:意思是还包括,我认为与索引引用的主要问题与freq = 0,BC当我尝试更简单的例子与连续日期系列,我没有这个问题。

+1

您的索引没有排序,或者至少是递减而非递增。这就是为什么切片返回一个空的数据帧(8月12日是在8月6日之前) – joris

+0

尝试'df = df.sort_index()',然后尝试再次切片。 – joris

+0

根据@joris的建议进行扩展,也可以通过以下两种方式之一来反转顺序:'df.loc ['2015-08-12':'2015-08-10']'或'df.loc ['2015-08-10':'2015-08-12': - 1]'但是没有明确的排序(当然是一个好建议),并不一定意味着片的结果将被排序。你实际上在做一个'iloc'风格的切片。 – JohnE

回答

0

df.loc['2015-08-12':'2015-08-10']df.loc['2015-08-10':'2015-08-12':-1]都工作。 df = df.sort_index()和切片我正在尝试的方式也有效。谢谢你们。我错过了那里的树林。