按照原始系列的索引按时间顺序返回一个大熊猫系列的日期时间

时间:2017-08-08 10:54:49

标签: python pandas datetime series indices

我编写了一个大熊猫系列的日期时间,如下所示(下面以系列的一部分为例):

0   2002-02-03
1   1979-01-01
2   2006-12-25
3   2008-07-16
4   2005-05-30

注意:每个单元格的dtype是'pandas._libs.tslib.Timestamp'

对于上面的例子,我想按时间顺序对它们进行排名,并按照原始系列的索引(第二列)返回一系列:

0   1
1   0
2   3
3   4
4   2

我尝试使用.order(),。sort()和.index()的混合来实现这一目标但到目前为止无济于事。什么是最简单的方法,按原始系列的指数按时间顺序获得一系列日期时间?

谢谢。

2 个答案:

答案 0 :(得分:4)

您可以使用Series.rank,减去1并转换为int

a = df['date'].rank(method='dense').sub(1).astype(int)
print (a)
0    1
1    0
2    3
3    4
4    2
Name: date, dtype: int32

Series.rank中的参数method

  

方法:{'average','min','max','first','dense'}

     

平均值:组的平均排名    min :组中的最低排名   最大:组中的最高排名   第一个:按顺序分配的排名,它们出现在数组中   密集:喜欢'min',但是群组之间的等级总是增加1

答案 1 :(得分:1)

  1. 只需尝试从tslib.Timestamp更改日期时间系列to_datetime()to_pydatetime()
  2. 为original_index(dfl['org_ind'] = np.arange(1:len(df))创建一列 然后做 - df.sort_values(by='foo', ascending=True)
  3. 您将按时间顺序和original_index获取日期......