如何创建列返回同一ID最后一次出现的Status值?
实现方案
1. Excel 公式实现
在Result列的第一个单元格(例如D2)输入以下公式,下拉填充即可:
=LOOKUP(2,1/(A:A=A2),C:C)
原理:1/(A:A=A2)生成匹配当前ID为1、其余为错误值的数组,LOOKUP(2, ...)会忽略错误值,定位到最后一个匹配项对应的Status值。
如果使用Excel 365及以上版本,推荐更直观的XLOOKUP函数:
=XLOOKUP(A2,A:A,C:C,,0,-1)
参数-1表示从后往前查找,直接返回当前ID最后一条记录的Status。
2. Python Pandas 实现
假设数据存储在DataFrame df中,两行代码即可完成:
# 按ID分组后,将每组最后一条的Status赋值给该组所有行 df['Result'] = df.groupby('ID')['Status'].transform(lambda x: x.iloc[-1])
3. SQL 实现
利用窗口函数标记每个ID的记录顺序,再关联获取最后一条的Status:
WITH ranked_data AS ( SELECT ID, Count, value, Status, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Count DESC) AS rn FROM your_table ) SELECT t.ID, t.Count, t.value, t.Status, r.Status AS Result FROM your_table t JOIN ranked_data r ON t.ID = r.ID AND r.rn = 1;
需求回顾

- 单个ID对应Count列标注的多条记录,每条记录有独立的value和Status。
- 目标:新增Result列,同一ID下的所有记录均显示该ID最后一条记录的Status值。
示例:ID“456”共有4条记录,最后一条(第9行,Count=4)的Status为“not ok”,因此该ID下第4、7、8、9行的Result列均显示“not ok”。
内容的提问来源于stack exchange,提问作者matchbox13
相关产品推荐
相关产品推荐

