python查找距离具有特定标签的数据最近的行
我有一个数据帧: 类型:卷: 问题10 问题20 塔纳 问题10 塔纳 塔纳 问题10 当我在第[I]行得到类型'T'时,我想找到Q[I-1]-Q[I+1]的对应值(即,接近于T的Q值,在T之上和之下)python查找距离具有特定标签的数据最近的行,python,pandas,Python,Pandas,我有一个数据帧: 类型:卷: 问题10 问题20 塔纳 问题10 塔纳 塔纳 问题10 当我在第[I]行得到类型'T'时,我想找到Q[I-1]-Q[I+1]的对应值(即,接近于T的Q值,在T之上和之下) 一种方法是使用ffill()和bfill()创建两个临时列,然后减去这些列以填充 df.assign(Volume=df.assign(fnaf=df.Volume.ffill(), fnab=df.Volume.bfill()) .eval('Vnew = fnaf - fnab', i
一种方法是使用ffill()和bfill()创建两个临时列,然后减去这些列以填充
df.assign(Volume=df.assign(fnaf=df.Volume.ffill(), fnab=df.Volume.bfill())
.eval('Vnew = fnaf - fnab', inplace=False)
.pipe(lambda x: x.Volume.fillna(x.Vnew)))
输出:
Type Volume
0 Q 10.0
1 Q 20.0
2 T 10.0
3 Q 10.0
4 T 0.0
5 T 0.0
6 Q 10.0
编辑添加日志功能:
df.assign(Volume=df.assign(fnaf=np.log(df.Volume.ffill()), fnab=np.log(df.Volume.bfill()))
.eval('Vnew = fnaf - fnab', inplace=False)
.pipe(lambda x: x.Volume.fillna(x.Vnew)))
你的问题是什么?我想找到最接近T的Q值(高于T和低于T)。你对这个样本数据集的预期结果是什么?我想将T值设置为最接近的两个Q值之和。非常感谢!真的很有帮助!顺便说一句,我可以问一下如何获得log差(即log(fnaf)-log(fnab))而不是fnaf-fnab?同样,当我使用这个代码时,无论从这里的数据中可以看到qsa的值是多少,我都会得到T的0,第一个是10,但是第二个和第三个T是0,因为之前的Q等于之后的Q。也许您可以用导致您出现问题的数据更新问题。
df.assign(Volume=df.assign(fnaf=np.log(df.Volume.ffill()), fnab=np.log(df.Volume.bfill()))
.eval('Vnew = fnaf - fnab', inplace=False)
.pipe(lambda x: x.Volume.fillna(x.Vnew)))