Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python查找距离具有特定标签的数据最近的行_Python_Pandas - Fatal编程技术网

python查找距离具有特定标签的数据最近的行

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

我有一个数据帧:

类型:卷:

问题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', 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)))