某些 DataFrame 和 Series 方法具有
method
参数。例如:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
它可以采用以下值:{无、‘backfill’/‘bfill’、‘pad’/‘ffill’、‘nearest’}
但是我想def某种填充函数,它反过来定义如何使用系列中已有的值来填充空白,以便可以按以下方式使用它:
df = DataFrame.fillna(method='new_method')
在您的非常具体的情况下(最近值的平均值),您可以这样做:
import pandas as pd
import numpy as np
col1 = np.array([0, 1, np.nan, 4])
col2 = np.array([0, np.nan, 2, 5])
df = pd.DataFrame({"col1" : col1, "col2" : col2})
# Trick: average forward and backward fill
df = 0.5 * (df.fillna(method="bfill") + df.fillna(method="ffill"))
通过对向后和向前填充进行平均,您将获得平均值,同时保持所有其他值(除了舍入误差)不变。但当然,它不适用于第一行和最后一行。 (但是如果可以的话,您可以再次使用 fill 和 bfill)