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

如何在Pandas中为各订单添加标记最新修订版的列

如何标记Pandas DataFrame中订单的最新修订版?

假设我们有这样一个记录订单信息的DataFrame,包含订单编号、修订编号和总价:

OrderNum RevNum TotalPrice
0AXL3    0      $5.00
0AXL3    1      $4.00
0AXL3    2      $7.00
0AXL3    3      $8.00
0BDF1    0      $3.00
0BDF1    1      $2.50
0BDF1    2      $8.50

我们需要添加一列NewestRevision,标记该行是否为对应订单的最新修订版,期望输出如下:

OrderNum RevNum TotalPrice NewestRevision
0AXL3    0      $5.00      No
0AXL3    1      $4.00      No
0AXL3    2      $7.00      No
0AXL3    3      $8.00      Yes
0BDF1    0      $3.00      No
0BDF1    1      $2.50      No
0BDF1    2      $8.50      Yes

解决方案

我们可以利用Pandas的分组功能和简单的比较操作来实现这个需求,具体步骤和代码如下:

import pandas as pd

# 构造示例DataFrame
data = {
    'OrderNum': ['0AXL3', '0AXL3', '0AXL3', '0AXL3', '0BDF1', '0BDF1', '0BDF1'],
    'RevNum': [0, 1, 2, 3, 0, 1, 2],
    'TotalPrice': ['$5.00', '$4.00', '$7.00', '$8.00', '$3.00', '$2.50', '$8.50']
}
df = pd.DataFrame(data)

# 添加NewestRevision标记列
df['NewestRevision'] = df.groupby('OrderNum')['RevNum'].transform(lambda x: x == x.max()).map({True: 'Yes', False: 'No'})

print(df)

代码细节解释

  • df.groupby('OrderNum')['RevNum']:先按订单编号对数据分组,聚焦每组的修订编号列做后续计算。
  • transform(lambda x: x == x.max()):transform方法会把分组计算的结果映射回原DataFrame的每一行,这里判断当前行的RevNum是否等于该订单组的最大修订号,得到一组布尔值。
  • .map({True: 'Yes', False: 'No'}):把布尔值转换为更直观的"Yes"/"No"文本标记。

运行这段代码后,就能得到你想要的带最新修订标记的DataFrame了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:01:07