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

pandas如何将type列值转为列头并映射对应value值?

最优实现方案

直接使用Pandas内置的宽表转换函数即可,无需手动遍历赋值,执行效率远高于逐列判断赋值的方案。

方案1:pivot_table方法(最通用,适配绝大多数场景)

核心代码如下:

import pandas as pd
# 转换逻辑
res = df.pivot_table(
    index="name",
    columns="type",
    values="value",
    fill_value=0
).reset_index()
# 可选操作:如果不需要保留columns的名称属性,可加一行 res.columns.name = None 清理列名属性

该方法直接调用Pandas底层优化的聚合逻辑,哪怕是百万级数据量也能快速处理,完全不需要自己循环遍历type的所有取值。

方案2:get_dummies方法(代码更简洁)

如果追求更短的代码写法,也可以用独热编码结合分组求和的方式实现:

res = pd.get_dummies(df, columns=["type"], prefix="", prefix_sep="").groupby("name", as_index=False).sum()

这个方法的原理是先把type列展开为0/1的独热编码列,和value列相乘后按name分组求和,最终输出结果完全符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 00:00:01