如何反转Pandas Series索引使最新日期居首(保持键值对应)
Pandas Series 反转操作指南
没问题,这就帮你搞定这两个Pandas Series的操作~
一、反转给定Series,让最新日期位于第一行(索引与值绑定)
首先我们先把你提供的数据集构造成Pandas Series(方便演示):
import pandas as pd # 构造你提供的日期和数值列表 dates = [ '2020-01-02', '2020-01-03', '2020-01-06', '2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10', '2020-01-13', '2020-01-14', '2020-01-15', '2020-01-16', '2020-01-17', '2020-01-21', '2020-01-22', '2020-01-23', '2020-01-24', '2020-01-27', '2020-01-28', '2020-01-29', '2020-01-30', '2020-01-31', '2020-02-03', '2020-02-04', '2020-02-05', '2020-02-06', '2020-02-07', '2020-02-10', '2020-02-11', '2020-02-12', '2020-02-13', '2020-02-14', '2020-02-18', '2020-02-19', '2020-02-20', '2020-02-21', '2020-02-24', '2020-02-25', '2020-02-26', '2020-02-27', '2020-02-28' ] values = [ 74.573036, 73.848030, 74.436470, 74.086395, 75.278160, 76.877136, 77.050926, 78.697075, 77.634407, 77.301704, 78.270020, 79.136551, 78.600250, 78.880821, 79.260696, 79.032265, 76.708298, 78.878326, 80.529434, 80.412743, 76.847343, 76.636299, 79.166336, 79.811897, 80.745445, 79.647896, 80.026192, 79.543365, 81.432350, 80.852463, 80.872375, 79.391556, 80.541367, 79.715088, 77.910744, 74.209946, 71.696297, 72.833664, 68.072662, 68.032837 ] price_series = pd.Series(values, index=pd.to_datetime(dates))
要实现最新日期在前,且索引与对应数值绑定,有两种简单方法:
方法1:切片反转法 ([::-1])
直接用Python切片语法颠倒整个Series的行顺序,索引和值会同步反转:
reversed_series = price_series[::-1]
输出的前几行效果如下:
2020-02-28 68.032837 2020-02-27 68.072662 2020-02-26 72.833664 2020-02-25 71.696297 2020-02-24 74.209946 ...
方法2:索引降序排序法
因为你的索引是日期类型,直接按索引降序排列也能达到相同效果,适合索引本身有序的场景:
reversed_series = price_series.sort_index(ascending=False)
二、不改变值顺序的前提下反转索引
如果你需要保持值的原始顺序不变,只把索引换成原索引的逆序(比如原第一个值对应最早日期,现在对应最晚日期),可以通过重新设置索引实现:
# 获取原索引的反转序列 reversed_index = price_series.index[::-1] # 保持值的顺序,重新绑定反转后的索引 series_with_reversed_index = pd.Series(price_series.values, index=reversed_index)
这种方法下,值的顺序和原Series完全一致,只是索引变成了从最晚到最早的顺序。
内容的提问来源于stack exchange,提问作者Austin Jin
相关产品推荐
相关产品推荐

