熊猫:groupby并根据某些列值获取尾部

恶魔

我有一个数据框看起来像

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

或者我们taildrop_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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章