Pandas如何基于指定列的分组值拆分创建新列
问题解决方法
你使用pivot_table/pivot报错的核心原因是没有指定可唯一标识行的索引参数,导致同列名冲突。只需要先为每个count分组内的记录生成组内递增的行号作为透视行索引,即可完成你要的拆分效果,代码如下:
- 首先构造示例数据集
import pandas as pd df = pd.DataFrame({ 'count': [1, 1, 1, 2, 2, 2], 'orders': [40, 60, 80, 10, 30, 50], 'books': [2, 4, 6, 8, 10, 12] })
- 生成分组内的行序号,用于对齐不同分组的行
df['group_row_id'] = df.groupby('count').cumcount()
- 执行透视并整理格式
# 透视转换 pivot_res = df.pivot( index='group_row_id', columns='count', values=['orders', 'books'] ) # 拼接列名为你需要的 字段_分组值 格式 pivot_res.columns = [f'{field}_{group}' for field, group in pivot_res.columns] # 移除临时生成的行序号列 final_res = pivot_res.reset_index(drop=True)
运行后得到的final_res输出完全匹配你的预期结果:
orders_1 orders_2 books_1 books_2 0 40 10 2 8 1 60 30 4 10 2 80 50 6 12
注意:该方法要求每个count分组下的记录数一致,和你给出的示例场景匹配;如果不同分组行数不一致,缺失的对应位置会自动填充为空值NaN。
内容的提问来源于stack exchange,提问作者JodeCharger100
相关产品推荐
相关产品推荐

