gpt4 book ai didi

python - Pandas :groupby 并根据某些列值获取尾部

转载 作者:行者123 更新时间:2023-12-04 01:09:39 26 4
gpt4 key购买 nike

我有一个数据框看起来像

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

或者我们用drop_duplicates修复tail

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

关于python - Pandas :groupby 并根据某些列值获取尾部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65270388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com