我有一个数据框看起来像
id week value
1 1 15
1 2 29
1 3 49
1 3 19
2 6 10
2 7 99
2 8 53
如何根据每个ID的最近2周提取数据框?就像一条尾巴,但没有记录。
理想的输出
id week value
1 2 29
1 3 49
1 3 19
2 7 99
2 8 53
这更像factorized
然后选择每个组的最后两个
m = df.iloc[::-1].groupby('id')['week'].transform(lambda x :x.factorize()[0]).isin([0,1])
out = df[m]
id week value
1 1 2 29
2 1 3 49
3 1 3 19
5 2 7 99
6 2 8 53
或者我们tail
用drop_duplicates
df.merge(df.drop_duplicates(['id','week']).groupby('id').tail(2).drop('value',1))
id week value
0 1 2 29
1 1 3 49
2 1 3 19
3 2 7 99
4 2 8 53
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句