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

如何将Python中的DataFrame df1转换为x为列、y降序为索引的样式?

问题:重塑DataFrame结构,将x转为列、y转为降序索引并填充z值

首先来看你的原始DataFrame生成代码:

import pandas as pd
import numpy as np
import random
np.random.seed(10)
df1 = pd.DataFrame({'x':[1,2,3,4,5,1,2,3,4,5], 'y':[10,10,10,10,10,20,20,20,20,20], 'z':np.random.normal(size = 10) })

你的需求是:将x值转换为列,y值转换为降序索引,用z值填充对应位置,目标结构如下:

df2 = pd.DataFrame(np.random.randn(2,5), index = [20,10], columns=[1,2,3,4,5])

解决方案

用pandas的pivot()方法先完成数据重塑,再对索引进行降序排序就能完美实现需求:

# 1. 用pivot重塑数据,将y设为索引、x设为列,z作为填充值
df_pivoted = df1.pivot(index='y', columns='x', values='z')
# 2. 对索引进行降序排序,得到目标结构
df2 = df_pivoted.sort_index(ascending=False)

简单说明:

  • pivot()方法会自动把y列的值作为索引,x列的唯一值作为列名,z列的对应值精准填充到对应单元格中;
  • sort_index(ascending=False)会把默认升序的索引(10,20)改成你需要的降序(20,10),最终结构和你给出的df2完全匹配,只是填充的是原始df1中的真实z值而非随机数~

内容的提问来源于stack exchange,提问作者YQ.Wang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:37:29