python - Python - 按组有条件地删除第一行
问题描述
我希望有条件地删除数据框中每个组的第一行。
在每个“ID”中,第一行的“开始”列应始终为 1。如果没有,我想从数据框中删除该行。
df = pd.DataFrame({'ID': ['A','A','B','B','C','C','C','D'],
'Start': [0,1,1,0,0,0,1,1],
'End': [1,0,0,1,1,1,0,0]})
ID Start End
0 A 0 1
1 A 1 0
2 B 1 0
3 B 0 1
4 C 0 1
5 C 0 1
6 C 1 0
7 D 1 0
结果应如下所示:
result = pd.DataFrame({'ID': ['A','B','B','C','D'],
'Start': [1,1,0,1,1],
'End': [0,0,1,0,0]})
ID Start End
0 A 1 0
1 B 1 0
2 B 0 1
3 C 1 0
4 D 1 0
解决方案
使用groupby
and cumsum
,然后在组 cumsums 必须从 1 开始的假设下过滤。
df[~df.groupby('ID')['Start'].cumsum().eq(0)]
ID Start End
1 A 1 0
2 B 1 0
3 B 0 1
6 C 1 0
7 D 1 0
推荐阅读
- typescript - Typescript - 从 yaml 读取变量并用它们替换另一个文件中的标记
- typescript - 如何键入传入函数的窄数组类型?
- flutter - 推送扩展的 Widget Flutter
- python - 如何在 python 中检查 Outlook ActiveWindow 的 TypeName
- sql - 根据另一列中的值何时更改添加新列
- java - DocuSign : 未经用户同意登录
- javascript - 如何使 NodeJS + ExpressJS API 防弹?
- java - 由于空值无法返回。java.lang.NullPointerException:无法调用“reactor.core.publisher.Mono.map”,因为为空
- java - 如何在 Spring/HTML 中创建一个实时更新新数据条目/删除而不刷新的表?
- mysql - mysql:使用多表查询时count()很慢