Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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_Interpolation - Fatal编程技术网

Python 将自定义函数插值到系列

Python 将自定义函数插值到系列,python,pandas,interpolation,Python,Pandas,Interpolation,这是一个df: 2005-01-24 117.0 2005-02-22 NaN 2005-03-21 NaN 2005-04-18 114.0 2005-05-23 NaN 2005-06-20 NaN 2005-07-18 122.0 预期输出是将上下值的平均值填充NaN值,如下所示: 2005-01-24 117.0 2005-02-22 115.5 (117-114 / 2) 2005-03-21 115.

这是一个df:

2005-01-24    117.0
2005-02-22      NaN
2005-03-21      NaN
2005-04-18    114.0
2005-05-23      NaN
2005-06-20      NaN
2005-07-18    122.0
预期输出是将上下值的平均值填充NaN值,如下所示:

2005-01-24    117.0
2005-02-22    115.5    (117-114 / 2)
2005-03-21    115.5
2005-04-18    114.0
2005-05-23    118.0    (122-114 / 2)
2005-07-18    122.0

据我所知,df.interpolate()不允许传递函数?我们还尝试了.rolling(2).mean()和重新编制索引,但没有成功

假设您的数据是s系列:

import pandas as pd
import numpy as np

s = pd.Series({'2005-01-24': 117.0,
 '2005-02-22': np.nan,
 '2005-03-21': np.nan,
 '2005-04-18': 114.0,
 '2005-05-23': np.nan,
 '2005-06-20': np.nan,
 '2005-07-18': 122.0})
您可以使用ffill和bfill查找上下界,然后取平均值

s.ffill().add(s.bfill()).div(2)
Out[71]: 
2005-01-24    117.0
2005-02-22    115.5
2005-03-21    115.5
2005-04-18    114.0
2005-05-23    118.0
2005-06-20    118.0
2005-07-18    122.0
dtype: float64

我猜你的意思是(117+114/2)而不是(117-114/2)?太干净了。谢谢