首页 > 解决方案 > Python为数据框中每组的前3个值选择数据

问题描述

从按 ID 和日期排序的给定数据框中:

ID  Date        Value
1   12/10/1998  0
1   04/21/2002  21030
1   08/16/2013  56792
1   09/18/2014  56792
1   09/14/2016  66354
2   06/16/2015  46645
2   12/08/2015  47641
2   12/11/2015  47641
2   04/13/2017  47641
3   07/29/2009  28616
3   03/31/2011  42127
3   03/17/2013  56000

我想获取前 3 个日期的值,按 ID 分组:

56792
56792
66354
47641
47641
47641
28616
42127
56000

我只需要价值观

标签: pythonpandasdataframepandas-groupby

解决方案


您可以sort_values同时使用IDDate,并使用GroupBy.tail来获取前 3 个日期的值:

df.Date = pd.to_datetime(df.Date)
df.sort_values(['ID','Date']).groupby('ID').Value.tail(3).to_numpy()

# array([56792, 56792, 66354, 47641, 47641, 47641, 28616, 42127, 56000])

推荐阅读