如何按ID展平分组后的Pandas DataFrame列?
Pandas实现ID分组展平为多列
实现步骤:
- 给每个ID分组内的行生成序号标签,用于作为新列名的后缀
- 通过
pivot方法将VALUE列按序号标签转成多列 - 清理列名格式,还原ID为普通列
完整代码示例:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'ID': [1, 1, 2, 2, 3, 3], 'VALUE': [11, 12, 21, 22, 31, 32] }) # 生成组内序号标签,格式为v1、v2... df['col_tag'] = 'v' + (df.groupby('ID').cumcount() + 1).astype(str) # 执行展平操作 flattened_df = df.pivot(index='ID', columns='col_tag', values='VALUE').reset_index() # 移除列索引的名称,避免多余标识 flattened_df.columns.name = None print(flattened_df)
代码说明:
df.groupby('ID').cumcount():为每个ID分组内的行生成从0开始的连续计数,加1后得到1、2...的序号,拼接前缀v后作为新列名pivot(index='ID', columns='col_tag', values='VALUE'):将每个ID对应的VALUE值,按col_tag指定的列名展开成多列reset_index():把ID从索引列还原为普通数据列
最终输出:
ID v1 v2 0 1 11 12 1 2 21 22 2 3 31 32
内容的提问来源于stack exchange,提问作者Fredrik
相关产品推荐
相关产品推荐

