Skip to main content
 首页 » 编程设计

python之在特定索引的列中查找最近的非零数

2025年05月04日23虾米姐

我有一个 pandas dataframe,它有一个像

这样的列
df = pd.DataFrame({'A':[0,0,15,0,0,0,0,0,0,5]}) 
 
    A 
0   0 
1   0 
2   15 
3   0 
4   0 
5   0 
6   0 
7   0 
8   0 
9   5 

现在基于索引(比方说 5)我想确定列中最近的非零数字(此处索引 2 和值 15)并返回从给定索引到达那里所需的跳数。 在给定的示例中,它将是 +3,因为它来自索引 2 到索引 5,如果给定的索引是 7,那么答案将是 -2,因为索引是 9 值 5

请您参考如下方法:

首先找到所有非零元素的索引:

nonzeros = df[df.A != 0]).index 

计算你的行到所有行的距离:

anchor = 5 
dists = anchor - nonzeros 

求最小距离(按绝对值):

nhops = min(dists, key=abs) 

一言以蔽之:

hnops = min((anchor - df[df.A != 0].index), key=abs) 
#3 

最接近的非零值的索引可以通过重新组合nhops和anchor来计算:

min_index = anchor - nhops 
#2