简体   繁体   中英

Return a pandas series of date time in chronological order by the original series' indices

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

  1. Just try to change your date time series to_datetime() or to_pydatetime() from tslib.Timestamp.
  2. create a column for original_index ( 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM