Python 熊猫:自定义fillna()函数?

Python 熊猫:自定义fillna()函数?,python,pandas,data-processing,data-wrangling,Python,Pandas,Data Processing,Data Wrangling,假设我有如下数据: >>> df = pd.DataFrame({'values': [5, np.nan, 2, 2, 2, 5, np.nan, 4, 5]}) >>> print(df) values 0 5.0 1 NaN 2 2.0 3 2.0 4 2.0 5 5.0 6 NaN 7 4.0 8 5.0 我知道我可以使用fillna(),以及fillna(method='

假设我有如下数据:

>>> df = pd.DataFrame({'values': [5, np.nan, 2, 2, 2, 5, np.nan, 4, 5]})
>>> print(df)
   values
0     5.0
1     NaN
2     2.0
3     2.0
4     2.0
5     5.0
6     NaN
7     4.0
8     5.0
我知道我可以使用
fillna()
,以及
fillna(method='ffill')
等参数来用前面的值填充缺少的值。有没有为fillna编写自定义方法的方法?假设我想用前两个值和后两个值的算术中间值替换每个NaN值,我该怎么做?(我不是说这是填充值的好方法,但我想知道是否可以这样做)

输出必须是什么样子的示例:

0     5.0
1     3.0 
2     2.0
3     2.0
4     2.0
5     5.0
6     4.0
7     4.0
8     5.0

您可以同时使用
ffill
bfill
,如下所示:

df['values'] = df['values'].ffill().add(df['values'].bfill()).div(2)
print(df)

   values
0     5.0
1     3.0 
2     2.0
3     2.0
4     2.0
5     5.0
6     4.0
7     4.0
8     5.0

只需将
df['values']
更改为
df
即可应用于整个数据帧

您可以同时使用
ffill
bfill
,如下所示:

df['values'] = df['values'].ffill().add(df['values'].bfill()).div(2)
print(df)

   values
0     5.0
1     3.0 
2     2.0
3     2.0
4     2.0
5     5.0
6     4.0
7     4.0
8     5.0

只需将
df['values']
更改为
df
即可应用于整个数据帧

我明白你的要求。您制作了一列
[5,np.nan,1,2,2,5,np.nan,np.nan,3]
但是您的
打印(df)
只显示两个
np.nan
值。请把它修好!我明白你的要求。您制作了一列
[5,np.nan,1,2,2,5,np.nan,np.nan,3]
但是您的
打印(df)
只显示两个
np.nan
值。请把它修好!