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

Python Pandas如何将DataFrame分组后列值列表拆分为多列完成结构重塑

解决方案

你原来的实现只把col2作为分组键,缺少了其他同分组下值完全相同的列(col3~col6),调整后可以用两种方式实现需求:


方式1:基于现有groupby逻辑调整

# 分组时携带所有固定值列,聚合col1为列表
group_df = df.groupby(['col2', 'col3', 'col4', 'col5', 'col6'], as_index=False)['col1'].agg(list)
# 将列表列拆分为多列
split_cols = pd.DataFrame(group_df['col1'].to_list(), index=group_df.index)
# 合并固定列和拆分出的数值列,并重命名列符合要求
res = pd.concat([group_df.drop('col1', axis=1), split_cols], axis=1)
res.columns = [f'col{i+1}' for i in range(res.shape[1])]

方式2:分组内加序号+透视表实现(逻辑更直观)

# 给每个col2分组下的行添加序号,作为后续透视的列标识
df['group_inner_id'] = df.groupby('col2').cumcount()
# 透视生成宽表
res = df.pivot(
    index=['col2', 'col3', 'col4', 'col5', 'col6'],
    columns='group_inner_id',
    values='col1'
).reset_index()
# 统一重命名列符合要求
res.columns = [f'col{i+1}' for i in range(res.shape[1])]

两种方式输出的res就是你需要的目标结构。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:54:00