Skip to main content
 首页 » 编程设计

python之在 Pandas 系列中查找最后一个非零元素的索引

2025年05月04日19lhb25

我想找到 pandas 系列中最后一个非零元素的索引。我可以用一个循环来完成:

ilast = 0 
for i in mySeries.index: 
    if abs(mySeries[i]) > 0: 
        ilast = i 

有没有更简洁、更短的方法?

请您参考如下方法:

我可能只写s[s != 0].index[-1],例如

>>> s = pd.Series([0,1,2,3,0,4,0],index=range(7,14)) 
>>> s 
7     0 
8     1 
9     2 
10    3 
11    0 
12    4 
13    0 
dtype: int64 
>>> s[s != 0].index[-1] 
12 

最初我认为使用 nonzero 会使事情变得更简单,但我能想到的最好的是

>>> s.index[s.nonzero()[0][-1]] 
12 

对于这个例子来说要快得多(快 30 多倍),但我不喜欢它的外观..YMMV。