美文网首页
pandas dataframe按日期排序?

pandas dataframe按日期排序?

作者: 途中的蜗牛 | 来源:发表于2020-04-09 11:07 被阅读0次

原文地址:https://cloud.tencent.com/developer/ask/195429

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

print(df.head())
df['Date'] = pd.to_datetime(df['Date'])
df.index = df['Date']
del df['Date']
df.sort_index()
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
               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

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

另一个案例:

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

df = pd.read_csv('data',sep=',')

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

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
df.reset_index(inplace=True)

del df['index']

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

只是扩展MaxU的正确答案:您使用了正确的方法,但是,就像许多其他pandas方法一样,您必须“重新创建”数据帧才能使所需的更改生效。正如MaxU已经建议的那样,这是通过再次键入变量(将所使用的方法的输出“存储”到同一变量中)来实现的,例如:

df = df.sort_index()

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

df.sort_index(inplace=True)

但是,根据我的经验,我经常使用第一个选项感觉“更安全”。它也看起来更清晰,更规范,因为并非所有方法都提供了inplace使用方法。但我觉得我觉得......

相关文章

网友评论

      本文标题:pandas dataframe按日期排序?

      本文链接:https://www.haomeiwen.com/subject/yubqmhtx.html