如何在不更改值顺序的情况下按索引反转熊猫系列

问题描述

现在我的熊猫系列看起来像:

Date
2020-01-02    74.573036
2020-01-03    73.848030
2020-01-06    74.436470
2020-01-07    74.086395
2020-01-08    75.278160
2020-01-09    76.877136
2020-01-10    77.050926
2020-01-13    78.697075
2020-01-14    77.634407
2020-01-15    77.301704
2020-01-16    78.270020
2020-01-17    79.136551
2020-01-21    78.600250
2020-01-22    78.880821
2020-01-23    79.260696
2020-01-24    79.032265
2020-01-27    76.708298
2020-01-28    78.878326
2020-01-29    80.529434
2020-01-30    80.412743
2020-01-31    76.847343
2020-02-03    76.636299
2020-02-04    79.166336
2020-02-05    79.811897
2020-02-06    80.745445
2020-02-07    79.647896
2020-02-10    80.026192
2020-02-11    79.543365
2020-02-12    81.432350
2020-02-13    80.852463
2020-02-14    80.872375
2020-02-18    79.391556
2020-02-19    80.541367
2020-02-20    79.715088
2020-02-21    77.910744
2020-02-24    74.209946
2020-02-25    71.696297
2020-02-26    72.833664
2020-02-27    68.072662
2020-02-28    68.032837

如何在不更改值顺序的情况下反转整个系列以使最新日期位于第一行? (让每个索引和值结合在一起)

解决方法

df为您的数据:

df = df.to_frame().reset_index()
date_vals = df.Date.values
df['Date'] = date_vals[::-1]
,

ds是您的熊猫系列。您想反转日期索引,并保持其值与日期(索引和值保持一致),然后可以执行以下操作:

ds = ds[::-1]
# This is shorthand for taking all the dates but you can take specific dates like this
ds['2020-01-07':'2020-01-02':-1]

要反转日期索引,但将数据值保持在相同的位置,可以执行以下操作:

ds.index = ds.index.values[::-1]

仅反转数据值而不反转日期索引:

# Use this to update but sometimes I had issues using this
ds.update(ds.values[::-1])
# or you can do this instead and recreate the series if it doesn't work
ds = pd.Series(ds.values[::-1],ds.index)