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

如何按code分组,用同日期的actual_value填充该列缺失值?

按分组填充同日期的缺失值

需求说明

对给定的DataFrame df,按code字段分组,每组内相同date的行,用该日期已存在的actual_value有效值填充该列的NaN值(注:同一日期的actual_value值均相同)。

原始DataFrame

date  actual_value  fitted_value  predicted_value    code
0    2023/8/31           NaN           NaN       520.994413  LX0301
1    2023/9/30           NaN           NaN       580.967973  LX0301
2   2023/10/31           NaN           NaN       650.392867  LX0301
3    2023/8/31    471.459992    520.027310              NaN  LX0301
4    2023/9/30           NaN           NaN       531.199547  LX0301
5   2023/10/31           NaN           NaN       600.053484  LX0301
6    2023/8/31    471.459992    511.902229              NaN  LX0301
7    2023/9/30    480.400211    518.202630              NaN  LX0301
8   2023/10/31           NaN           NaN       537.890792  LX0301
9    2023/8/31           NaN           NaN        99.216818  LX0101
10   2023/9/30           NaN           NaN        98.624779  LX0101
11  2023/10/31           NaN           NaN        98.690596  LX0101
12   2023/8/31     99.400000     99.221767              NaN  LX0101
13   2023/9/30           NaN           NaN        98.822977  LX0101
14  2023/10/31           NaN           NaN        98.875062  LX0101
15   2023/8/31     99.400000     99.220693              NaN  LX0101
16   2023/9/30     98.700000     98.802146              NaN  LX0101
17  2023/10/31           NaN           NaN        98.738091  LX0101

期望结果

date  actual_value  fitted_value  predicted_value    code
0    2023/8/31    471.459992           NaN       520.994413  LX0301
1    2023/9/30    480.400211           NaN       580.967973  LX0301
2   2023/10/31           NaN           NaN       650.392867  LX0301
3    2023/8/31    471.459992    520.027310              NaN  LX0301
4    2023/9/30    480.400211           NaN       531.199547  LX0301
5   2023/10/31           NaN           NaN       600.053484  LX0301
6    2023/8/31    471.459992    511.902229              NaN  LX0301
7    2023/9/30    480.400211    518.202630              NaN  LX0301
8   2023/10/31           NaN           NaN       537.890792  LX0301
9    2023/8/31     99.400000           NaN        99.216818  LX0101
10   2023/9/30     98.700000           NaN        98.624779  LX0101
11  2023/10/31           NaN           NaN        98.690596  LX0101
12   2023/8/31     99.400000     99.221767              NaN  LX0101
13   2023/9/30     98.700000           NaN        98.822977  LX0101
14  2023/10/31           NaN           NaN        98.875062  LX0101
15   2023/8/31     99.400000     99.220693              NaN  LX0101
16   2023/9/30     98.700000     98.802146              NaN  LX0101
17  2023/10/31           NaN           NaN        98.738091  LX0101

解决方案

利用groupby结合transform方法,按code和date分组后,用组内的有效值填充NaN。由于同一组内的actual_value有效值完全相同,使用first()/max()/mean()均可获取到该有效值:

方法一:使用first()

df['actual_value'] = df.groupby(['code', 'date'])['actual_value'].transform('first')

方法二:使用max()

df['actual_value'] = df.groupby(['code', 'date'])['actual_value'].transform('max')

方法说明

  • 按code和date分组,确保每个分组对应同一代码下的同一日期的所有行
  • transform方法会保留原DataFrame的索引结构,将分组计算的结果映射回原位置
  • 因为同一分组内的actual_value有效值一致,first()会取分组内第一个非NaN值,max()会取分组内的最大值(即唯一的有效值),从而完成NaN填充

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:49:54