Pandas如何对DataFrame转置以获取剩余两列的对应数值
解决方案
你要实现的是长表转宽表的需求,直接使用.T全局转置不符合该场景的逻辑,pivot方法即可快速实现:
- 首先统一subject列的大小写(避免原始数据中
Art和art被识别为不同科目):
df['subject'] = df['subject'].str.lower()
- 执行长表转宽表操作:
result_df = df.pivot( index='name', columns='subject', values='marks' ).reset_index().fillna('')
- 输出的
result_df就是你需要的结构:第一列为name,后续列为各科目名称,对应位置填充marks值,空值默认替换为空字符串。
补充说明:如果你的实际数据中存在同一个用户同一科目有多个分数的情况,可以改用
pivot_table方法指定聚合规则,比如取平均值:result_df = df.pivot_table( index='name', columns='subject', values='marks', aggfunc='mean' ).reset_index().fillna('')
内容的提问来源于stack exchange,提问作者crawler
相关产品推荐
相关产品推荐

