[英]Drop rows before a specific observation in a MultiIndex DataFrame
对于 MultiIndex DataFrame 中的多个主题( id
),我在不同时间点( dt
)有一系列观察结果( status
):
dt status
id n
01 1 xx abc
2 xx xxx
02 1 xx xxx
2 xx abc
3 xx xxx
4 xx xxx
03 1 xx xxx
04 1 xx xxx
2 xx xxx
3 xx abc
我想在status=='abc'
之前删除每个观察结果,以创建一个新的 MultiIndex DataFrame,如下所示:
dt status
id n
01 1 xx abc
2 xx xxx
02 2 xx abc
3 xx xxx
4 xx xxx
04 3 xx abc
最有效的方法是什么?
创建一个布尔掩码以识别status
为abc
的行,然后按id
对掩码进行分组并使用cummax
向前传播True
值,然后使用生成的掩码过滤行
df[df['status'].eq('abc').groupby('id').cummax()]
dt status
id n
01 1 xx abc
2 xx xxx
02 2 xx abc
3 xx xxx
4 xx xxx
04 3 xx abc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.