我有一个 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
