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

如何在Pandas中按疫苗厂商分类填充累计接种量空值

问题出在分组逻辑上!

你把Date也放进groupby的分组键里了,这就导致每个分组里只有单一行数据(毕竟同一个厂商+日期只会出现一次),不管是bfill还是ffill都找不到同组内的其他值来填充空值,自然没效果。

你的需求是按厂商分组,在每个厂商的时间序列里用前一天的有效值填充后续空值,所以分组键只需要保留Vaccine Manufacturer就行,而且要确保每个厂商的行是按日期排序的(否则填充顺序会错)。

正确代码步骤:

  1. 先把Date列转换成日期格式,确保排序逻辑正确:
df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%y')
  1. 按厂商分组并按日期排序,对Total_Vaccinations做向前填充:
df = df.sort_values(['Vaccine Manufacturer', 'Date'])
df['Total_Vaccinations'] = df.groupby('Vaccine Manufacturer')['Total_Vaccinations'].ffill()

这样就能得到你想要的结果:所有空值都会被前一个有效累计接种量填充。

为什么你的第二种方法看似有效果?

你说第二种方法仅实现了向前填充,大概率是运行时分组逻辑没真正生效(比如数据存在重复的厂商+日期组合,但从你提供的样本数据看不存在),但本质上把Date加入分组键是完全错误的逻辑,偶然的结果也不具备可靠性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:35:26