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

如何重塑pandas DataFrame将指定列值转换为新的列字段?

pandas DataFrame 重塑最优实现方案

以下两种高效实现均可以得到预期输出:

方法1:groupby 直接聚合(代码最简,适合分组后长度完全一致的场景)

核心逻辑:按A列分组后提取每组B列值转为列表,再直接构造新DataFrame

import pandas as pd
# 原始数据
df1 = pd.DataFrame({'A':['a','a','b','b'],'B':[1,2,2,3]})
# 转换代码
df2 = pd.DataFrame(df1.groupby('A')['B'].apply(list).to_dict())

方法2:pivot 透视(兼容性更强,支持分组后长度不一致的场景,缺失值自动补NaN)

核心逻辑:先给每个分组内的元素加行号,再通过透视表直接生成目标结构

import pandas as pd
# 原始数据
df1 = pd.DataFrame({'A':['a','a','b','b'],'B':[1,2,2,3]})
# 转换代码
df1['group_idx'] = df1.groupby('A').cumcount()
df2 = df1.pivot(index='group_idx', columns='A', values='B')\
         .reset_index(drop=True)\
         .rename_axis(None, axis=1)

优先选择建议:如果确认所有分组的元素数量完全一致,优先选方法1,代码更简洁执行效率更高;如果存在分组长度不一致的情况,选方法2兼容性更好。

两种方法执行后输出的df2均为预期结构:

ab
12
23

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:00:00