You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从右向左填充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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 02:15:36