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
相关产品推荐
相关产品推荐

