如何在pandas中定义自己的填充方法参数?

问题描述 投票:0回答:1

某些 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')
python pandas
1个回答
0
投票

在您的非常具体的情况下(最近值的平均值),您可以这样做:

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)

© www.soinside.com 2019 - 2024. All rights reserved.