熊猫:如何旋转具有定义级别的表格

亚历克斯·J

我的案件与到目前为止在网上发现的案件略有不同。我想在页眉中旋转具有特定级别的熊猫数据框。ivot_table函数要求值必须是数字,而pandas.pivot函数似乎并不能完全满足我的要求。

这是起始代码。

import pandas as pd
df = pd.DataFrame({'session':['2017', '2018','2017','2018','2017','2018'], 'domain':['network', 'network', 'facility', 'facility', 'access', 'access'], 'vendor':['vendorA', 'vendorA', 'vendorB','vendorB','vendorB','vendorB'], 'cost':[10,20,30,40,50,60]})
print df.to_string()
   cost    domain session   vendor
0    10   network    2017  vendorA
1    20   network    2018  vendorA
2    30  facility    2017  vendorB
3    40  facility    2018  vendorB
4    50    access    2017  vendorB
5    60    access    2018  vendorB

我所需要的是类似的内容,其中第一列级别只有“域”值,第二列级别是每个“会话”每个域的“供应商”和“成本”:

domain   network        facility       access 
session  vendor   cost  vendor   cost  vendor   cost
2017     vendorA  10    vendorB  30    vendorB  50
2018     vendorA  20    vendorB  40    vendorB  60
耶斯列尔

您可以使用set_index+unstack进行重塑,然后swaplevelMultiIndex列,并通过最后的排序它们sort_index

df1 = df.set_index(['session','domain'])
        .unstack()
        .swaplevel(0,1,1)
        .sort_index(1, ascending=False)
print (df1)
domain   network      facility        access     
          vendor cost   vendor cost   vendor cost
session                                          
2017     vendorA   10  vendorB   30  vendorB   50
2018     vendorA   20  vendorB   40  vendorB   60

或者使用pivot

df1 = df.pivot(index='session',columns='domain')
        .swaplevel(0,1,1)
        .sort_index(1, ascending=False)
print (df1)
domain   network      facility        access     
          vendor cost   vendor cost   vendor cost
session                                          
2017     vendorA   10  vendorB   30  vendorB   50
2018     vendorA   20  vendorB   40  vendorB   60

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在熊猫中旋转具有重复数据的表

如何旋转具有多个分组列的列?

旋转具有透明背景的BufferedImage

旋转具有重复索引的表

在熊猫索引和列中旋转具有相同的列

如何在SceneKit中以编程方式旋转具有特定角度的粒子?

如何一次旋转具有多个列的pandas数据框(时间序列)?

如何在bigquery中仅动态取消旋转具有特定后缀的列

如何旋转具有4x4矩阵变换或欧拉角的3d向量?

熊猫:如何对行中具有多个级别的计数进行分组?

如何在具有不同索引级别的熊猫中合并多索引?

旋转具有多个列的DataFrame的索引

在SQL中旋转具有多个列的表

如何设计具有更高嵌套级别的表?

如何在d3中绘制具有预定义起始位置和边距级别的矩形堆栈

旋转具有列值的多个列,每个新列重复一次

四元数旋转具有奇怪的行为(Haskell OpenGL)

Pivot_longer:旋转具有相同数据类型的多列数据

具有@Configuration的TYPE级别的@ConditionalOnProperty

具有多个继承级别的IDisposable

创建具有多个级别的图形

如何检查类似的子字符串是否出现在具有自定义公差级别的字符串中

如何在PostgreSQL中选择具有级别的表的所有层次结构

具有多级列的熊猫数据框:重命名特定级别的列,使其与另一级相同

如何将具有不同类别级别的多列转换为宽格式?

如何在postgres中存储具有不同精度级别的日期?

如何存储具有动态选项和多个级别的各种嵌套列表?

如何将 Pandas 数据帧转换为具有聚合级别的嵌套命名元组

如何在 R 中绘制具有不同级别的可折叠树?