Python实现Pandas DataFrame行值转列的聚合透视操作
Pandas行值转列的宽表实现方法
你梳理的「分组聚合+透视转列」逻辑本身就是pandas实现这类需求的标准路径,可直接落地,无额外依赖,具体实现如下:
核心实现步骤
- 第一阶段:按
A、B、C、E列分组,对D列执行求和计算 - 第二阶段:将分组结果中
E列的日期值转换为独立列头,交叉位置填充对应分组的求和值
# 分组聚合 grouped = data1.groupby(["A", "B", "C", "E"], as_index=False)["D"].sum() # 透视转宽表 data_MOD = grouped.pivot( index=["A", "B", "C"], columns="E", values="D" ).reset_index()
结果格式适配
pivot输出的结果会在无匹配值的交叉位置自动填充浮点型NaN,若要完全匹配你给出的目标输出格式,可补充两个调整操作:
- 将空值替换为示例中的字符串
'NaN' - 调整日期列的排列顺序,和目标结构对齐
# 空值替换 data_MOD = data_MOD.fillna("NaN") # 列顺序调整 data_MOD = data_MOD[["A", "B", "C", "2021-04-18", "2021-04-16"]]
鲁棒性优化
如果原始数据中存在同分组维度的重复条目,拆分式的groupby+pivot会触发重复值报错,可直接用pivot_table一步完成分组+透视全流程,等价代码如下:
data_MOD = data1.pivot_table( index=["A", "B", "C"], columns="E", values="D", aggfunc="sum", fill_value="NaN" ).reset_index()[["A", "B", "C", "2021-04-18", "2021-04-16"]]
内容的提问来源于stack exchange,提问作者Hummer
相关产品推荐
相关产品推荐

