使用Pandas分组检查每组最后两行是否含指定字符串并返回验证结果
Pandas分组检查每组最后两行是否包含指定字符串
原始DataFrame定义
import pandas as pd import numpy as np df = pd.DataFrame({'Id':[1,1,1,2,2,2,3,3,3], 'LastState':['JAY','JAY','JAY',np.nan,'penu hehe','penu hehe','JAY','penu hehe','POTATO IS A FRUIT']})
解决方案代码
通过groupby结合分组内操作可以实现需求,代码如下:
result = df.groupby('Id')['LastState'].apply( lambda x: x.tail(2).eq('POTATO IS A FRUIT').any() ).reset_index(name='LastState')
代码说明
- 按
Id字段分组,针对LastState列执行分组内逻辑 x.tail(2):提取每组的最后两行数据eq('POTATO IS A FRUIT'):判断每行值是否匹配目标字符串,生成布尔值序列any():检查布尔序列中是否存在True,即判断该组最后两行是否包含目标字符串reset_index(name='LastState'):将分组索引转为普通列,并将结果列重命名为LastState
执行后得到的result与期望结果完全一致:
Id LastState 0 1 False 1 2 False 2 3 True
内容的提问来源于stack exchange,提问作者INGl0R1AM0R1
相关产品推荐
相关产品推荐

