python - 删除重复项但保留一些

标签 python pandas numpy

是否可以删除重复项但保留最后 3-4 个?像这样的东西:

 df = df.drop_duplicates(['ID'], keep='last_four')

谢谢

最佳答案

您可以使用groupbytail并传递您希望保留的行数以获得相同的结果:

In [5]:   
# data setup 
df = pd.DataFrame({'ID':[0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,3,3,3,3,3,3,3,3,3,4], 'val':np.arange(25)})
df
Out[5]:
    ID  val
0    0    0
1    0    1
2    0    2
3    0    3
4    0    4
5    0    5
6    1    6
7    1    7
8    1    8
9    1    9
10   1   10
11   1   11
12   1   12
13   2   13
14   2   14
15   3   15
16   3   16
17   3   17
18   3   18
19   3   19
20   3   20
21   3   21
22   3   22
23   3   23
24   4   24

现在groupby并调用tail:

In [11]:    
df.groupby('ID',as_index=False).tail(4)

Out[11]:
    ID  val
2    0    2
3    0    3
4    0    4
5    0    5
9    1    9
10   1   10
11   1   11
12   1   12
13   2   13
14   2   14
20   3   20
21   3   21
22   3   22
23   3   23
24   4   24

关于python - 删除重复项但保留一些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42504518/

相关文章:

python - YouTube API v3 返回截断的观看历史记录

python - 如何更改 Pandas 中分组条形图的颜色?

Python - 找到 2 个列表的补充

python - 如何绘制 pandas 数据框列,其中 x 轴由另外两个列定义,给出起始值和结束值?

python - 登录 fft 的结果

python - 在 blender 外运行 Blender python 脚本

python - 使用 Bx 和 By 在 python 中剪切图像以进行前向和后向映射

Python:使用日期时间索引在 Pandas 中建立索引

python - pandas-python 数据框更新列

python - Pandas str.split 没有剥离分割模式