如何使用 pandas 中前一个非 na 值和下一个非 na 值的平均值填充列中的 na 值?

How do I fill na values in a column with the average of previous non-na and next non-na value in pandas?

原始 table:

Column A
5
nan
nan
15

新 table:

Column A
5
10
10
15

一个选项可能如下(使用 fillna 两次(使用选项 ffillbfill)然后取它们的平均值):

import pandas as pd
import numpy as np

df = pd.DataFrame({'x': [np.nan, 5, np.nan, np.nan, 15]})
filled_series = [df['x'].fillna(method=m) for m in ('ffill', 'bfill')]
print(pd.concat(filled_series, axis=1).mean(axis=1))
# 0     5.0
# 1     5.0
# 2    10.0
# 3    10.0
# 4    15.0

如您所见,即使 nan 发生在开头或结尾,这仍然有效。