首页 > 解决方案 > 实现数据透视表的“对立面”——重塑表以使选定列的唯一值成为索引

问题描述

我想要实现的是一种与数据透视表相反的东西。

基本上,我从这个数据框开始:

开始df

生成它的代码是:

df = pd.DataFrame({'bus ticket type':['student', 'student', 'student', 'senior', 'senior', 'senior'],
                         'distance (km)':['5', '10', '15', '5', '10', '15'],
                         'bus fare':['100', '120', '130', '90', '100', '110']})

您看到'distance (km)'5、10 和 15 公里中有 3 个唯一值吗?我正在尝试将此列中的唯一值作为数据框的索引。

所以我想把它变成:

df2

生成第二个数据帧的代码是:

df2 = pd.DataFrame({'distance (km)':['5', '10', '15'],
                             'student_bus_fare':['100', '120', '130'],
                            'senior_bus_fare':['90', '100', '110']})

我不是试图计算“学生”或“老年人”类别的平均分数或总分,也不是试图aggfunc根据距离实现某种类似的使用。

我纯粹想重新塑造它,以便distance索引中的唯一值。所有代表票价的原始值仍然完好无损。

标签: pythonpandaspivot

解决方案


.pivot

df = pd.DataFrame({'bus ticket type':['student', 'student', 'student', 'senior', 'senior', 'senior'],
                         'distance (km)':['5', '10', '15', '5', '10', '15'],
                         'bus fare':['100', '120', '130', '90', '100', '110']})

df2 = df.pivot(index='distance (km)', columns='bus ticket type', values='bus fare')

产量

bus ticket type senior student
distance (km)                 
10                 100     120
15                 110     130
5                   90     100

推荐阅读