python - 当特定列的连续行值大于一个数字时,熊猫会删除行
问题描述
我有一个这样的数据框,
col1 col2
A 1
B 2
C 3
D 3
E 3
F 4
G 5
H 5
I 5
J 5
现在我想删除连续 col2 值超过 3 次的那些行,在上面的数据框中, col2 值 5 出现超过 3 次,所以应该删除这些行。所以最终的数据框应该是这样的,
col1 col2
A 1
B 2
C 3
D 3
E 3
F 4
我可以使用带有计数器签入的 for 循环来执行此操作,但执行时间会更长。寻找一些 pythonic 方式/pandas 快捷方式来有效地做到这一点。
解决方案
要识别连续值,通常需要cumsum
差异和分组:
groups = df.col2.ne(df.col2.shift()).cumsum()
group_sizes = df.groupby(groups).transform('size')
out = df[group_sizes <= 3)
推荐阅读
- python - Python 3 tkinter | 网址中的图片未显示
- php - 如何在 Wordpress PHP 中动态添加子菜单?
- php - 如何显示多个连续的html元素
- google-cloud-functions - 我可以使用谷歌云函数进行多少次并行的 rest API 调用?
- javascript - 如何修复 VS Code 中 ES Next "::" 绑定运算符的语法错误?
- python-2.7 - 进入pdb时有什么方法可以停止后台进程吗?
- html - 如何优化 Safari 的 CSS 样式
- javascript - AngularJS / Material - 当用户清除文本输入时重新显示 ng-message
- python - 如何在 python 中使用 selenium-webdriver 定位文本框
- drawing - 为什么这个椭圆绘图程序这么慢?