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
值。请把它修好!