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

如何在同一DataFrame中将单列转换为表头行并重构数据?

问题描述

原始数据集:

NameAssignmentScores
BooTest10.9
BuzzTest30.7
BreeTest21.0
BooQuiz1.0
BuzzTest10.8

期望输出结果:

NameTest1Test3Test2Quiz
Boo0.9001.0
Buzz0.80.700
Bree001.00

尝试过DataFrame.T(仅对整个DataFrame生效)和pivot()方法,但未达到预期效果,寻求解决办法。

解决方案

方法1:使用pivot_table(推荐)

pivot_table可直接指定缺失值填充值,一步完成透视和补0操作:

import pandas as pd

# 构造原始DataFrame
data = {
    'Name': ['Boo', 'Buzz', 'Bree', 'Boo', 'Buzz'],
    'Assignment': ['Test1', 'Test3', 'Test2', 'Quiz', 'Test1'],
    'Scores': [0.9, 0.7, 1.0, 1.0, 0.8]
}
df = pd.DataFrame(data)

# 生成透视表,缺失值填充为0,重置索引并清除列名标识
result = df.pivot_table(
    index='Name',
    columns='Assignment',
    values='Scores',
    fill_value=0
).reset_index()
result.columns.name = None

print(result)

方法2:使用pivot + fillna

若坚持使用pivot,可后续通过fillna(0)补全缺失的分数:

import pandas as pd

data = {
    'Name': ['Boo', 'Buzz', 'Bree', 'Boo', 'Buzz'],
    'Assignment': ['Test1', 'Test3', 'Test2', 'Quiz', 'Test1'],
    'Scores': [0.9, 0.7, 1.0, 1.0, 0.8]
}
df = pd.DataFrame(data)

# 先透视,再填充缺失值为0,最后调整索引和列名
result = df.pivot(
    index='Name',
    columns='Assignment',
    values='Scores'
).fillna(0).reset_index()
result.columns.name = None

print(result)

两种方法都能生成目标表格结构,pivot_table更简洁高效,适合这类需要处理缺失值的透视场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:41:35