Pandas实现DataFrame分组后除最后一行外其余行追加逗号
Pandas分组追加逗号最优实现方案
核心思路
用pandas原生向量化操作实现,避免逐行循环,性能最优,逻辑完全匹配需求:
- 按
label字段分组后,对组内行做倒序计数,分组最后一行的计数值固定为0 - 筛选出所有计数值不等于0的行(即组内非最后一行),给这些行的
attribuutLabel字段末尾追加逗号 - 单条数据的分组内唯一行计数值为0,不会被追加逗号,自动满足单行不处理的要求
完整实现代码
import pandas as pd # 加载原始数据 data = [['object 1', 'property 1'], ['object 1','property 11'],['object 1','property 111'], ['object 2', 'property 2'], ['object 3', 'property 3'],['object 3','property 33']] df = pd.DataFrame(data, columns=['label', 'attribuutLabel']) # 核心处理逻辑 not_last_row_mask = df.groupby('label').cumcount(ascending=False) != 0 df.loc[not_last_row_mask, 'attribuutLabel'] += ','
运行输出结果
执行代码后得到的DataFrame完全匹配预期:
| label | attribuutLabel |
|---|---|
| object 1 | property 1, |
| object 1 | property 11, |
| object 1 | property 111 |
| object 2 | property 2 |
| object 3 | property 3, |
| object 3 | property 33 |
方案优势
- 全程使用pandas内置向量化方法,没有自定义循环,万级以上数据量下运行速度比apply/逐行遍历快数十倍
- 逻辑简洁,没有冗余判断,单行分组的场景天然被覆盖,不需要额外写分支判断
内容的提问来源于stack exchange,提问作者Sef
相关产品推荐
相关产品推荐

