pandas dataframe按分组条件用同组首行值替换指定列内容的实现
核心逻辑:按value字段分组,取每组第一条description值,再将该值批量覆盖同组所有行的description字段即可,不同常用场景的实现方式如下:
Pandas 实现
假设你已经将表格读取为DataFrame对象df,直接调用分组转换函数即可:
import pandas as pd # 此处省略读表代码,如df = pd.read_excel('你的文件路径')或读数据库等 df['description'] = df.groupby('value')['description'].transform('first')
SQL 实现(支持窗口函数的数据库版本,如MySQL 8.0+、PostgreSQL、Hive等)
用FIRST_VALUE窗口函数按value分组取首行值:
SELECT value, FIRST_VALUE(description) OVER ( PARTITION BY value -- 如果有指定排序规则决定哪条是首行,在这里加ORDER BY 字段,如原表自增ID ) AS description FROM 你的表名
Excel 实现
假设表格的value列是A列、description列是B列,第1行为表头,数据行是2~7行:
在空白列第2行(如C2)输入公式后下拉填充即可:=INDEX($B$2:$B$7,MATCH(A2,$A$2:$A$7,0))
处理后结果符合预期:
| value | description |
|---|---|
| 2 | Aron |
| 2 | Aron |
| 2 | Aron |
| 3 | John |
| 3 | John |
| 4 | Liam |
内容的提问来源于stack exchange,提问作者the_reaper
相关产品推荐
相关产品推荐

