aja*_*000 6 python sorting datetime pandas
我通过导入一个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())
Run Code Online (Sandbox Code Playgroud)
结果如下:
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
Run Code Online (Sandbox Code Playgroud)
该日期实际上可以追溯到1999年,因此,如果按日期对日期进行排序,它应该以升序显示数据吗?
Mar*_*erc 10
只是扩展 MaxU 的正确答案:您使用了正确的方法,但是,就像许多其他 Pandas 方法一样,您必须“重新创建”数据框以使所需的更改生效。正如 MaxU 已经建议的那样,这是通过再次键入变量来实现的(将所用方法的输出“存储”到同一变量中),例如:
df = df.sort_index()
或者通过利用属性的力量inplace=True,它将替换变量的内容而无需重新声明它。
df.sort_index(inplace=True)
但是,根据我的经验,我经常觉得使用第一个选项“更安全”。它看起来也更清晰、更规范,因为并非所有方法都提供这种inplace用法。但我都归结为脚本风格,我想......
数据看起来像这样
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
Run Code Online (Sandbox Code Playgroud)
使用pandas读取数据
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16102 次 |
| 最近记录: |