如何在一列中用熊猫中上一个非na值和下一个非na值的平均值填充na值



原始表:

A列
5
nan
nan
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发生在开头或结尾,它也能工作。

最新更新