如何从右向左填充DataFrame中的0值?已知fillna、ffill可从下到上填充
从右向左填充DataFrame的方法
在pandas中,确实存在对应从右向左的填充方法,核心是通过调整填充方法的axis参数来实现,以下是针对不同需求的解决方案:
1. 用右侧的非缺失值填充左侧缺失值(从右向左的"向后填充")
如果你的需求类似bfill(axis=0)从下到上填充的逻辑,想用右侧的有效数据填充左侧的缺失值,可以使用bfill(axis=1):
import pandas as pd import numpy as np # 示例DataFrame df = pd.DataFrame({ 'col1': [np.nan, np.nan, 5], 'col2': [np.nan, 3, np.nan], 'col3': [1, np.nan, np.nan] }) # 从右向左用右侧值填充左侧缺失 df_filled = df.bfill(axis=1)
执行后结果:
col1 col2 col3 0 1.0 1.0 1.0 1 3.0 3.0 NaN 2 5.0 NaN NaN
2. 从右向左填充指定值(比如0)
如果需要仅针对右侧存在有效数据的左侧缺失值填充为0,可以通过反转列顺序,填充后再还原的方式实现:
# 反转列顺序,将原右侧列移到左侧 df_reversed = df.loc[:, ::-1] # 从左到右填充0(对应原DataFrame的从右向左方向),剩余缺失值补0 df_reversed_filled = df_reversed.ffill(axis=1).fillna(0) # 反转列回到原顺序 df_final = df_reversed_filled.loc[:, ::-1]
补充说明
ffill(axis=1)是从左到右用左侧值填充右侧缺失,对应上下方向的ffill(axis=0);bfill(axis=1)是从右到左用右侧值填充左侧缺失,对应上下方向的bfill(axis=0);- 如果只是想把所有缺失值统一填充为0,直接用
df.fillna(0)即可,无需指定方向。
内容的提问来源于stack exchange,提问作者Joker Chair
相关产品推荐
相关产品推荐

