pandas中如何将GroupBy对象转换为多层索引DataFrame
实现方法
groupby.cumcount()不会触发聚合操作,返回值是与原DataFrame索引对齐、等长的序列,可直接赋值为原表新列,无需将GroupBy对象转换为DataFrame。
代码示例
# 假设原始数据存储在变量df中 # 新增组内计数列n:同一placa_encoded分组内按原始行顺序从0开始编号 df['n'] = df.groupby('placa_encoded').cumcount() # 设置多层索引,筛选调整列顺序得到目标结构 df_target = df.set_index(['placa_encoded', 'n'])[['time_seconds', 'velocidade', 'codcet']]
逻辑说明
- 计数规则与需求完全匹配:分组内序号从0开始,和样例目标的
n列取值一致 - 所有原始行数据完整保留,不会出现聚合类方法(如
count()、agg())压缩行数的问题 - 若需保留
date字段,只需在列选择列表中添加'date'即可。
运行后得到的df_target结构与你给出的目标表完全一致。
内容的提问来源于stack exchange,提问作者Tanishq Kumar
相关产品推荐
相关产品推荐

