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

如何为DataFrame中重复订单号对应的空Ticket列填充对应值?

如何按订单号统一填充Ticket列的空值?

嗨,我懂你现在的困扰啦——想用同一个订单号下已有的Ticket值填补空值,但用fillna(method='ffill')没得到想要的结果对吧?问题出在ffill只会按行的顺序向下填充,如果某个订单的空值出现在非空Ticket的前面(就像你数据里的订单13902和13501那样),它就没办法倒回去把前面的空值补上啦。

给你个靠谱的解决方案:用groupby按订单号分组,然后在每个组内同时做向前填充和向后填充,这样不管空值在组内的哪个位置,都能被同组的有效Ticket值替换。

具体代码如下:

# 按Order number分组,对每组的Ticket列先向前填充再向后填充
df['Ticket'] = df.groupby('Order number')['Ticket'].transform(lambda x: x.ffill().bfill())

为什么这个方法管用?

  • groupby('Order number')会把相同订单号的行归为一组,每个组的操作互不干扰;
  • ffill()会填充组内位于非空值之后的空值;
  • bfill()会填充组内位于非空值之前的空值;
  • 两者结合后,同一个订单下的所有空Ticket都会被替换成该订单对应的有效编号,完美匹配你的预期结果。

运行这段代码后,你的DataFrame就会变成:

Order numberTicket
13902S0-015581
13902S0-015581
13501S0-0012131
13501S0-0012131
13809S0-90-788
13809S0-90-788

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:07:48