如何用Pandas将DataFrame按每2行分组并添加分组类别列?
Pandas按固定行数分组并添加类别列的内置方法实现
问题描述
原始DataFrame数据如下:
TimeStamp,Value t1,akak t2,bb t3,vvv t5,ff t6,44 t7,99 t8,kfkkf t9,ff t10,oo
需求是按每2行一组拆分数据,为每组添加c1、c2……格式的分组类别列,最终得到如下结果:
TimeStamp,Value, class t1,akak,c1 t2,bb,c1 t3,vvv,c2 t4,ff,c2 t5,44,c3 t6,99,c3 t7,kfkkf,c4 t8,ff,c4 t9,oo,c5 t10,oo,c5
已知可通过循环实现,想确认Pandas是否有内置方法完成该操作。
解决方案
可以直接用Pandas的内置向量化操作实现,无需循环,步骤如下:
1. 加载数据(若未加载)
假设数据已保存为CSV文件,加载时处理字段前的空格:
import pandas as pd df = pd.read_csv("data.csv", skipinitialspace=True)
2. 生成分组类别列
利用整数除法生成连续分组编号,再格式化为cX的形式:
- 如果DataFrame的索引是连续整数:
df['class'] = 'c' + (df.index // 2 + 1).astype(str)
- 如果索引非连续(比如自定义索引),用
numpy生成连续序列来计算:
import numpy as np df['class'] = 'c' + (np.arange(len(df)) // 2 + 1).astype(str)
说明
这种方式依赖Pandas/Numpy的向量化运算,比循环效率高得多,尤其是处理大数据量时优势明显。执行后即可得到符合需求的DataFrame。
内容的提问来源于stack exchange,提问作者user93796
相关产品推荐
相关产品推荐

