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

如何将pandas DataFrame单元格值转为新列,取值为另一列对应数据?

pandas 长表转宽表实现方案

你要实现的是典型的长表转宽表操作,直接用pandas内置的pivot/pivot_table方法即可,比你用get_dummies的实现逻辑更简洁、性能也更好:

适用场景说明

  • 当每个Product + Test组合仅对应唯一Score值时,用pivot方法
  • 当存在同一个产品同一个测试项有多条测试数据的情况,用pivot_table指定聚合规则即可

代码示例

1. 无重复测试数据场景

import pandas as pd
# 原始df为你提到的输入数据结构
res = df.pivot(
    index="Product",
    columns="Test",
    values="Score"
).reset_index().rename_axis(columns=None)
# 输出结果会自动把Test列的所有唯一值(包括你提到的Test_C、Test_D)转为新列,对应值为Score列的数值
# 缺失的测试项默认填充NaN,如果需要适配机器学习场景填0,可追加.fillna(0)

2. 含重复测试数据场景

res = df.pivot_table(
    index="Product",
    columns="Test",
    values="Score",
    aggfunc="mean", # 重复值聚合规则,可根据需求替换为sum、max、min等
    fill_value=0 # 无对应测试项的产品直接填充0,无需后续单独处理空值
).reset_index().rename_axis(columns=None)

对比get_dummies的优势

不需要手动做哑变量和Score列的数值映射、不需要额外做列合并,一步完成转换,自动适配所有Test列的唯一值,即使后续新增测试项也不需要修改代码逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 21:15:09