pandas数据框按日期排序

时间:2017-01-02 21:56:35

标签: python sorting datetime pandas

我通过导入csv文件创建了一个数据帧。并将date列转换为datetime并将其作为索引。但是,在对索引进行排序时,它不会产生我想要的结果

         Date     Last
0  2016-12-30  1.05550
1  2016-12-29  1.05275
2  2016-12-28  1.04610
3  2016-12-27  1.05015
4  2016-12-23  1.05005
               Last
Date               
2016-12-30  1.05550
2016-12-29  1.05275
2016-12-28  1.04610
2016-12-27  1.05015
2016-12-23  1.05005

结果如下:

Can't bind to 'myHighlight' since it isn't a known property of 'p'

日期实际上可以追溯到1999年,所以如果我按日期排序,它应该按升序显示数据吗?

2 个答案:

答案 0 :(得分:2)

只是扩展MaxU的正确答案:你使用了正确的方法,但是,正如许多其他pandas方法一样,你将不得不重新创建"数据帧,以使所需的更改生效。正如MaxU已经建议的那样,这可以通过再次输入变量来实现(到"存储"使用的方法的输出到同一个变量中),例如:

df = df.sort_index()

或利用属性inplace=True的力量,这将取代变量的内容,而无需重新声明它。

df.sort_index(inplace=True)

然而,根据我的经验,我经常感觉“更安全”。使用第一个选项。它看起来更清晰,更规范,因为并非所有方法都提供inplace用法。但是,我猜这个问题完全归结为脚本...

答案 1 :(得分:2)

数据看起来像这样

Date,Last
2016-12-30,1.05550
2016-12-29,1.05275
2016-12-28,1.04610
2016-12-27,1.05015
2016-12-23,1.05005

使用熊猫读取数据

import pandas as pd
df = pd.read_csv('data',sep=',')
# Displays the data head
print (df.head())
         Date     Last
0  2016-12-30  1.05550
1  2016-12-29  1.05275
2  2016-12-28  1.04610
3  2016-12-27  1.05015
4  2016-12-23  1.05005

# Sort column with name Date
df = df.sort_values(by = 'Date')
         Date     Last
4  2016-12-23  1.05005
3  2016-12-27  1.05015
2  2016-12-28  1.04610
1  2016-12-29  1.05275
0  2016-12-30  1.05550

# reset the index
df.reset_index(inplace=True)

# Display the data head after index reset
       index        Date     Last
0      4  2016-12-23  1.05005
1      3  2016-12-27  1.05015
2      2  2016-12-28  1.04610
3      1  2016-12-29  1.05275
4      0  2016-12-30  1.05550

# delete the index
del df['index']

# Display the data head
print (df.head())
         Date     Last
0  2016-12-23  1.05005
1  2016-12-27  1.05015
2  2016-12-28  1.04610
3  2016-12-29  1.05275
4  2016-12-30  1.05550