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

如何修改Python Pandas代码实现特定NaN填充逻辑?

Pandas代码优化方案

实现逻辑顺序

先处理Jan列的NaN值填充,再执行原有同行向右填充逻辑,确保Jan列的特殊填充规则优先生效:

  • 若某行Jan列值为NaN,用上一行Jun列的非NaN值填充
  • 保留同行内非NaN值向右填充NaN单元格的功能

完整代码示例

import pandas as pd
import numpy as np

# 示例输入数据
data = {
    'Jan': [1, np.nan, 3, np.nan],
    'Feb': [np.nan, 2, np.nan, np.nan],
    'Jun': [5, 6, 7, 8]
}
df = pd.DataFrame(data)

# 步骤1:用前一行Jun列的值填充当前行Jan列的NaN
df['Jan'] = df['Jan'].fillna(df['Jun'].shift(1))

# 步骤2:执行原有同行向右填充NaN的逻辑
df = df.bfill(axis=1)

print(df)

输入输出示例

输入数据

JanFebJun
1NaN5
NaN26
3NaN7
NaNNaN8

输出结果

JanFebJun
115
526
337
778

关键说明

  • df['Jun'].shift(1):获取前一行Jun列的值,第一行Jan若为NaN则无法填充(因为没有上一行)
  • fillna():仅替换Jan列中的NaN值,不影响其他列
  • bfill(axis=1):按行方向从右往左取非NaN值填充左侧的NaN,实现同行向右填充的原有功能

内容的提问来源于stack exchange,提问作者Linear17

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 08:20:49