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

Pandas按color与fruit分组向前填充value列缺失值问题

解决组内向前填充不跨组的问题

问题分析

你之前的代码错误在于:

  • 将date加入了groupby的分组键,导致每个(color, fruit, date)被视为独立分组,mean()后每个分组仅保留一个值
  • 后续的ffill是全局执行的,而非限定在color和fruit的组内,因此出现跨组填充的问题

正确实现步骤

  1. 先按color、fruit、date排序,确保每个组内的日期顺序正确(向前填充依赖行顺序)
  2. 仅以color和fruit作为分组键,对value列执行组内向前填充

完整代码

import pandas as pd
import numpy as np

# 原数据
data = pd.DataFrame({'color': ['Green','Green', 'Green', 'Green', 'Red', 'Red'], 
                    'fruit' : ['Banana', 'Banana', 'Apple', 'Apple', 'Banana', 'Apple'],
                    'date': ['2011-01-01', '2011-01-02', '2011-01-01', '2011-01-02', '2011-02-01', '2011-02-01'],
                    'value': [ 1, np.nan, np.nan, 2, 3 , np.nan]})

# 排序保证组内日期顺序
data_sorted = data.sort_values(['color', 'fruit', 'date'])
# 组内向前填充
data_sorted['value'] = data_sorted.groupby(['color', 'fruit'])['value'].ffill()
# 重置索引匹配期望输出格式
result = data_sorted.reset_index(drop=True)
print(result)

输出结果

color   fruit        date  value
0   Green  Apple  2011-01-01    NaN
1   Green  Apple  2011-01-02    2.0
2   Green Banana  2011-01-01    1.0
3   Green Banana  2011-01-02    1.0
4     Red Banana  2011-02-01    3.0
5     Red  Apple  2011-02-01    NaN

注:你给出的期望输出中Red被写成了Yellow,属于笔误,上述结果为基于原数据的正确输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:55:59