如何移除Pandas Series末尾的连续零行?
Pandas移除Series末尾连续零的解决方案
问题场景
给定如下Pandas Series:
import pandas as pd s = pd.Series([1, 0, 1, 0, 2, 0, 0, 0])
需要移除末尾所有连续的零,得到结果:
pd.Series([1, 0, 1, 0, 2])
使用s.loc[s != s.shift()]无法完全移除末尾的零串(会保留最后一串零的第一个元素),手动删除不具备通用性,因此需要更优方案。
解决方案
方法一:定位最后一个非零元素切片
直接找到Series中最后一个非零元素的索引,切片到该位置即可:
# 获取最后一个非零元素的索引 last_non_zero_idx = s[s != 0].index[-1] # 切片得到结果 result = s.loc[:last_non_zero_idx]
逻辑直观,代码简洁,适配大多数常规场景。
方法二:反向累积掩码过滤
通过反向遍历生成掩码,筛选出需要保留的部分,适合索引非连续或自定义索引的Series:
# 反向生成非零累积掩码,反转后得到保留范围 keep_mask = s.iloc[::-1].ne(0).cumsum().gt(0) result = s.loc[keep_mask.iloc[::-1]]
验证结果
两种方法执行后,输出结果均为:
0 1 1 0 2 1 3 0 4 2 dtype: int64
内容的提问来源于stack exchange,提问作者Michael Dorner
相关产品推荐
相关产品推荐

