【发布时间】:2020-08-06 11:06:19
【问题描述】:
假设我有这样的 pandas DataFrame:
>>> df = pd.DataFrame({'id':[1,1,1,1,1,2,2,2,2,2,2,3,4],'value':[1,1,1,1,3,1,2,2,3,3,4,1,1]})
>>> df
id value
1 1
1 1
1 1
1 1
1 3
2 1
2 2
2 2
2 3
2 3
2 4
3 1
4 1
我想为每个 id 包括重复项获取一个具有前 2 个(实际上是 n 个值)值的新 DataFrame,如下所示:
id value
0 1 1
1 1 1
3 1 1
4 1 1
5 1 3
6 2 1
7 2 2
8 2 2
9 3 1
10 4 1
我尝试过使用 head() 和 nsmallest() 但我认为它们不会包含重复项。有没有更好的方法来做到这一点?
进行编辑以明确表示如果重复项超过 2 个,我希望每组有 2 个以上的记录
【问题讨论】:
标签: python pandas greatest-n-per-group