如何在Python中选择最后3个日期



我有一个看起来像他的数据集:

ID date
1  O1-01-2012
1  05-02-2012
1  25-06-2013
1  14-12-2013
1  10-04-2014
2  19-05-2012
2  07-08-2014
2  10-09-2014
2  27-11-2015
2  01-12-2015
3  15-04-2013
3  17-05-2015
3  22-05-2015
3  30-10-2016
3  02-11-2016

我正在使用Python,我想为每个ID选择3个最后日期。这是我想要的数据集:

ID date
1  25-06-2013
1  14-12-2013
1  10-04-2014
2  10-09-2014
2  27-11-2015
2  01-12-2015
3  22-05-2015
3  30-10-2016
3  02-11-2016

我用这个代码为每个ID选择最后一个日期:

df_2=df.sort_values(by=['date']).drop_duplicates(subset='ID',keep='last')

但是,我如何选择多个日期(例如,最后3个日期或最后4个日期等(?

您可以使用groupbytail以下方式从每组中获取最后两个项目:

import pandas as pd
df = pd.DataFrame({'ID':[1,1,1,2,2,2,3,3,3],'value':['A','B','C','D','E','F','G','H','I']})
df2 = df.groupby('ID').tail(2)
print(df2)

输出:

ID value
1   1     B
2   1     C
4   2     E
5   2     F
7   3     H
8   3     I

注意,为了简单起见,我使用了其他(已经排序的(数据来构建df

可以试试这个:

df.sort_values(by=['date']).groupby('ID').tail(3).sort_values(['ID', 'date'])

我尝试过,但使用了非日期时间数据类型

a = [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3]
b = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o']
import pandas as pd
import numpy as np
a = np.array([a,b])
df=pd.DataFrame(a.T,columns=['ID','Date'])
# the tail would give you the last n number of elements you are interested in
df_ = df.groupby('ID').tail(3)
df_

输出:

ID    Date
2   1   c
3   1   d
4   1   e
7   2   h
8   2   i
9   2   j
12  3   m
13  3   n
14  3   o

相关内容

  • 没有找到相关文章

最新更新