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

Python如何将现有DataFrame某列的取值转为新列生成新DataFrame?

Pandas 列转宽表实现方案

你需要的是pandas中的透视转换操作,将指定列的唯一取值转换为新的列名,对应数值填充到新列中,实现代码如下:

  • 首先确认原始DataFrame的3个核心字段:
    1. 行保留字段:转换后作为每行唯一标识的列(如示例中的用户ID列,假设列名为user_id)
    2. 列来源字段:需要将取值转为新列的目标列(假设列名为category)
    3. 值填充字段:转换后新列中要填充的数值对应的原列(假设列名为score)

无重复数据场景

如果同一个user_id + category组合在原始表中只有一条数据,直接用pivot方法:

import pandas as pd

# df为你的原始DataFrame
new_df = df.pivot(
    index="user_id",
    columns="category",
    values="score"
).reset_index()

# 可选:清理列名的额外标识,让表结构更符合预期
new_df.columns.name = None

有重复数据场景

如果同一个user_id + category组合存在多条数据,需要指定聚合规则,用pivot_table方法:

import pandas as pd

# aggfunc可根据需求替换为'mean'、'max'、'count'等聚合函数
new_df = pd.pivot_table(
    df,
    index="user_id",
    columns="category",
    values="score",
    aggfunc="sum"
).reset_index()

new_df.columns.name = None

示例验证

你可以用以下构造的测试数据验证效果,和你给出的示例场景完全匹配:

# 构造原始测试数据
df = pd.DataFrame({
    "user_id": [1,1,2,2,3,3],
    "category": ["A","B","A","B","A","B"],
    "score": [90,85,78,92,88,76]
})

运行上述转换代码后即可得到你需要的目标DataFrame格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:57:00