I compiled a pandas series of date time like the following (the below shows part of the series as an example):
0 2002-02-03 1 1979-01-01 2 2006-12-25 3 2008-07-16 4 2005-05-30
Note: the dtype of each cell is 'pandas._libs.tslib.Timestamp'
For the above example, I would like to rank them by chronological order and return a series by the original series' indices like this (the second column):
0 1 1 0 2 3 3 4 4 2
I've tried using a mix of .order(), .sort(), and .index() to achieve this but to no avail so far. What will be the easiest way to do get a series of date time in chronological order by the original series' indices?
Thank you.
You can use Series.rank
, subtract 1
and cast to 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
Parameter method
in Series.rank
:
method : {'average', 'min', 'max', 'first', 'dense'}
average : average rank of group
min : lowest rank in group
max : highest rank in group
first : ranks assigned in order they appear in the array
dense : like 'min', but rank always increases by 1 between groups
to_datetime()
or to_pydatetime()
from tslib.Timestamp. dfl['org_ind'] = np.arange(1:len(df)
) And then do - df.sort_values(by='foo', ascending=True)
you will get your dates in chronological order and original_index...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.