python - 熊猫:自定义 fillna() 函数?
问题描述
假设我有这样的数据:
>>> 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 值替换为前 2 个值和下 2 个值的算术中间值,我该怎么做?(我并不是说这是填充值的好方法,但我想知道是否可以这样做)。
输出必须是什么样子的示例:
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
andbfill
一起使用,如下所示:
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
只需将 to 更改df['values']
为df
应用于整个数据框!
推荐阅读
- graph - 如何知道节点/特征贡献?
- c++ - 为什么此代码段有效?如何取消引用 nullptr?
- css - 在 CSS 中更改页面的颜色配置文件
- verilog - 我什么时候应该在 SystemVerilog 中使用关键字“assign”?
- kubernetes - 在没有云提供商负载均衡器的情况下,将 kubernetes 集群暴露给“世界”
- python - Pygame collidepoint()无法正常工作
- c# - Nuget 问题:接口一直引用旧版本
- javascript - NavLink:悬停和活动时的 CSS 动画
- java - 类符号 FirebaseInstanceIdService [FCM android]
- javascript - Sweet Alert 未显示,但响应消息显示但在新浏览器中打开。我该如何解决这个问题?