我编写了一个大熊猫系列的日期时间,如下所示(下面以系列的一部分为例):
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()的混合来实现这一目标但到目前为止无济于事。什么是最简单的方法,按原始系列的指数按时间顺序获得一系列日期时间?
谢谢。
答案 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)
to_datetime()
或to_pydatetime()
。dfl['org_ind'] = np.arange(1:len(df)
)创建一列
然后做 -
df.sort_values(by='foo', ascending=True)
您将按时间顺序和original_index获取日期......