python - 如果重复超过 n 次,则删除 Pandas 数据框中的连续重复项
问题描述
在这里建立问题/解决方案,我正在尝试设置一个参数,如果相同的值连续出现 5 次(或更多)次,则该参数只会删除连续的重复项......
我可以在链接的帖子中应用解决方案,该解决方案.shift()
用于检查前一个(或通过调整班次周期参数在过去或未来指定的值)是否等于当前值,但我如何调整它来检查几个同时连续的值?
假设一个看起来像这样的数据框:
x y
1 2
2 2
3 3
4 3
5 3
6 3
7 3
8 4
9 4
10 4
11 4
12 2
我正在努力实现这一目标:
x y
1 2
2 2
3 3
8 4
9 4
10 4
11 4
12 2
我们丢失了第 4、5、6、7 行,因为我们在 y 列中找到了五个连续的 3。但是保留第 1,2 行,因为我们只能在 y 列中找到两个连续的 2。同样,保留第 8、9、10、11 行,因为我们只在 y 列中找到四个连续的 4。
解决方案
让我们尝试cumsum
差异以找到连续的块。然后groupby().transform('size')
获取块的大小:
thresh = 5
s = df['y'].diff().ne(0).cumsum()
small_size = s.groupby(s).transform('size') < thresh
first_rows = ~s.duplicated()
df[small_size | first_rows]
输出:
x y
0 1 2
1 2 2
2 3 3
7 8 4
8 9 4
9 10 4
10 11 4
11 12 2
推荐阅读
- html - 将 Displacy Entity Recognition Visualization 渲染为 Plotly Dash
- java - 如何将位图转换为字节数组android?
- r - 在plotly中将箭头段添加到散点图中
- java - 无法读取 packageName - Android Studio
- node.js - Sublime 文本找不到 Node.js。如何帮助 Sublime 正确找到 Node?
- python - 带有 base10 的 int() 的文字无效
- mysql - 如何在 gnu make makefile 中转义反引号
- javascript - 在javascript中使用child_process执行shell命令
- javascript - 续集创建 2 个条目而不是 1 个
- spring-mvc - 为什么在 SpringBoot 应用程序中从我的测试中删除 WebMvcTest 注释会导致 ComponentScan 失败?