Pandas - 使用 datetimeindex 对数据帧进行排序
Posted
技术标签:
【中文标题】Pandas - 使用 datetimeindex 对数据帧进行排序【英文标题】:Pandas - Sorting a dataframe by using datetimeindex 【发布时间】:2017-03-08 20:17:09 【问题描述】:以下是我的数据框,其中包含来自多个 Excel 文件的值。我想做一个时间序列分析,所以我把索引设为datetimeindex
。但是我的索引不是按日期排列的。以下是我的数据框:
Item Details Unit Op. Qty Price Op. Amt. Cl. Qty Price.1 Cl. Amt.
Month
2013-04-01 5 In 1 Pcs -56.0 172.78 -9675.58 -68.0 175.79 -11953.96
2013-04-01 Adaptor Pcs -17.0 9.00 -152.99 -17.0 9.00 -152.99
2013-04-01 Agro Tape Pcs -2.0 26.25 -52.50 -2.0 26.25 -52.50
...
2014-01-01 12" Angal Pcs -6.0 31.50 -189.00 -6.0 31.50 -189.00
2014-01-01 13 Mm Electrical Drill Check Set -1.0 247.50 -247.50 -1.0 247.50 -247.50
2014-01-01 14" Blad Pcs -5.0 157.49 -787.45 -5.0 157.49 -787.45
...
2013-09-01 Zinc Bolt 1/4 X 2"(box) Box -1.0 899.99 -899.99 -1.0 899.99 -899.99
2013-09-01 Zorik 88 32gram Pcs -1.0 45.00 -45.00 -1.0 45.00 -45.00
2013-09-01 Zorrik 311 Gram Pcs -1.0 270.01 -270.01 -1.0 270.01 -270.01
不按日期排序。我也想对索引及其各自的行进行排序。我google了一下,发现有一种方法可以对datetimeindex进行排序,如下:
all_data.index.sort_values()
DatetimeIndex(['2013-04-01', '2013-04-01', '2013-04-01', '2013-04-01',
'2013-04-01', '2013-04-01', '2013-04-01', '2013-04-01',
'2013-04-01', '2013-04-01',
...
'2014-02-01', '2014-02-01', '2014-02-01', '2014-02-01',
'2014-02-01', '2014-02-01', '2014-02-01', '2014-02-01',
'2014-02-01', '2014-02-01'],
dtype='datetime64[ns]', name=u'Month', length=71232, freq=None)
但它只是对索引进行排序,如何根据排序后的索引对整个数据框进行排序?请帮忙。
【问题讨论】:
【参考方案1】:我觉得你需要sort_index
:
all_data = all_data.sort_index()
【讨论】:
替代:all_data.sort_index(inplace=True)
@Clausen - 我认为inplace
不是好习惯,请检查this 和this
读起来很有趣!谢谢@jezrael。但是对于那些只看标题的人来说:通常inplace=True
是个坏主意,但是如果您正在寻找内存优化,一些方法可能值得与 inplace 一起使用。 TL;DR:如果您没有非常具体的原因,请勿就地使用。以上是关于Pandas - 使用 datetimeindex 对数据帧进行排序的主要内容,如果未能解决你的问题,请参考以下文章
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
pandas使用pd.DatetimeIndex函数将混合格式的日期数据数据转化为时间索引数据DatetimeIndex通过index参数为Series数据指定时间对象索引
基于时间间隔使用 DatetimeIndex 对 Pandas 数据帧进行切片
pandas使用pd.DatetimeIndex函数将混合格式的日期数据(包含字符串datetime对象pd.Timestamp)数据转化为时间索引数据DatetimeIndex
Pandas - 如何将 RangeIndex 转换为 DateTimeIndex
pandas使用index参数为Series数据指定时间对象索引(DatetimeIndex)使用datetime包创建索引时间数据