You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DataFrame分组后的数据拆分至不同列并重构表格?

解决方法

可以通过分组内添加序号 + 数据重塑的方式实现需求,具体步骤如下:

1. 构造示例数据

先还原原始DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'object': ['Fruit', 'Fruit', 'Fruit', 'Car', 'Car', 'Car'],
    'Name': ['Banana', 'Apple', 'Melon', 'Fiat', 'BMW', np.nan],
    'Color': ['Yellow', 'Red', 'Green', 'White', 'Black', np.nan]
})

2. 为每个分组添加组内序号

用groupby.cumcount()给每个object分组内的行添加从1开始的序号,后续作为列名后缀:

df['idx'] = df.groupby('object').cumcount() + 1

3. 重塑数据生成目标格式

用pivot方法转置数据,再整理列名和索引:

# 转置数据,按object分组、idx作为列维度
result = df.pivot(index='object', columns='idx', values=['Name', 'Color'])
# 合并层级列名,生成Name1、Color1这类格式
result.columns = [f'{col[0]}{col[1]}' for col in result.columns]
# 把object从索引转回普通列
result = result.reset_index()

最终得到的result结构如下:

objectName1Name2Name3Color1Color2Color3
CarFiatBMWNaNWhiteBlackNaN
FruitBananaAppleMelonYellowRedGreen

补充说明

  • 若不同分组的行数不一致,缺失位置会自动填充NaN,完全匹配需求
  • cumcount()默认从0开始计数,加1是为了让列名后缀从1开始,和目标格式对齐

内容的提问来源于stack exchange,提问作者Gabriel Makhoul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:27:20