python - 根据从末尾开始的列值的计数过滤熊猫数据框
问题描述
我有一个这样的数据框,
df
col1 col2
1 A
2 B
1 A
2 A
3 B
4 A
5 A
6 A
7 B
8 A
9 B
现在我想过滤这个数据框,把所有的行都取到最后第三个B,所以数据框看起来像,
col1 col2
3 B -->third B
4 A
5 A
6 A
7 B -->second B
8 A
9 B -->first B
我可以使用 for 循环检查它是否在每次迭代中检查其 B 来执行此操作,但是执行需要更长的时间,寻找一些 pandas 快捷方式以有效的方式执行此操作。
解决方案
使用cumsum
from numpy 计算 B 的数量并对其进行过滤:
df[np.cumsum(df['col2'] == 'B') >= df['col2'].value_counts()['B'] - 2]
推荐阅读
- ios - 检测任何耳机播放/暂停前进/后退音量增大/减小按钮轻按 swift
- html - 如何使 flex column Pilot 成为第二个 flex column 高度
- java - Java Parallel Stream AnyMatch 的 Parallel Stream 的一个字段
- branch.io - 如何从 Branch Analytics 中获取 UserId - Branch.IO
- python - 用星号(*)Python转换的短路算法
- python - 为什么 python 中的舍入数字给出不同的答案
- intellij-idea - IntelliJ 捆绑的 jdk 路径
- r - R:如何为数据框中的子集行申请循环
- c++ - 处理除以零
导致意外行为 - reactjs - 如何使 React.Children.map 与 Typescript 一起使用?