在数据透视表中重新排列顺序

alpenmilch411

我在熊猫中有下面的数据透视表:

   Division             BU/CF        Allocation Key CurrentHC 

0  Central Functions     A            NEF           3 
1                        B            NEF           2 
2                        C            EXP           1 
3                                     NEF           4 
4                        D            NEF           3 
5  Xerxes                E            NLE           4 
6                        F            NLE           1 
7                        G            NLE           1 
8                        H            NLE           5 

Python显然按字母顺序对除法和BU / CF进行排序。如何将自己的订单应用于数据透视表。

所需的输出:

   Division              BU/CF       Allocation Key CurrentHC 
0  Central Functions     D            NEF           3 
1                        B            NEF           2 
2                        C            EXP           1 
3                                     NEF           4 
4                        A            NEF           3 
5  Xerxes                E            NLE           4 
6                        H            NLE           5 
7                        G            NLE           1 
8                        F            NLE           1 

我用来创建数据透视表的代码:

#Create full report pivot 
report_pivot = pd.pivot_table(full_report, index=["Division","BU/CF", "Allocation Key"], 
                       values=["Previous HC", "New Hire", "Resigned", "In", "Out", "Current HC", "Delta"], 

                       fill_value=0) 

通过这样做,我设法重新排列了列:

# Reorderr columns 
cols = [ "Previous HC", "New Hire", "Resigned", "In", "Out","Delta", "Current HC"] 
report_pivot = report_pivot[cols] 

索引是否有类似的方法。特别是“ BU / CF”

*为了简化上表,我不包括“当前HC”以外的其他列

最大容量

好吧,你可以做这样的事情:

In [62]: sort_map = {
   ....:  'E': 10,
   ....:  'H': 20,
   ....:  'G': 30,
   ....:  'F': 40,
   ....: }

In [63]: df.loc[df['Division'] == 'Xerxes', 'BU/CF'].map(sort_map)
Out[63]:
5    10
6    40
7    30
8    20
Name: BU/CF, dtype: int64

In [64]: idx = df.loc[df['Division'] == 'Xerxes', 'BU/CF'].map(sort_map).sort_values().index

In [65]: idx
Out[65]: Int64Index([5, 8, 7, 6], dtype='int64')

In [66]: df[df['Division'] == 'Xerxes'].reindex(idx)
Out[66]:
  Division BU/CF AllocationKey  CurrentHC
5   Xerxes     E           NLE          4
8   Xerxes     H           NLE          5
7   Xerxes     G           NLE          1
6   Xerxes     F           NLE          1

更新:

从Pandas 0.20.1开始,不建议使用.ix索引器,而建议使用更严格的.iloc和.loc索引器

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数据透视表重新排列值

来自分类Dev

在 Pandas 数据透视表中重新排列不同级别的列

来自分类Dev

在pandas数据框中基于顺序的列重新排列

来自分类Dev

需要重新排列sql表的数据

来自分类Dev

spark 是否按字母顺序在内部重新排列数据框中字段的顺序?

来自分类Dev

在R中重新排列分组数据

来自分类Dev

重新排列ggplot中的数据

来自分类Dev

在R中重新排列数据帧

来自分类Dev

如何重新排列矩阵中的数据?

来自分类Dev

Python,在熊猫中重新排列数据

来自分类Dev

如何检查2列表并在python中重新排列顺序

来自分类Dev

在熊猫数据框中重新排列列的非连续顺序

来自分类Dev

重新索引数据透视表索引是否按顺序排列?

来自分类Dev

根据字母顺序重新排列列数据

来自分类Dev

在数组数组中重新排列值

来自分类Dev

在NSStackView中拖动视图以重新排列顺序

来自分类Dev

在Caliburn Micro中重新排列父子激活顺序

来自分类Dev

在Caliburn Micro中重新排列父子激活顺序

来自分类Dev

以特定顺序重新排列矩阵中的行

来自分类Dev

将纵向数据集重新排列到寿命表中

来自分类Dev

在巨大的表中重新排列有关更改聚集索引的数据

来自分类Dev

在R中对Excel数据表进行排序和重新排列

来自分类Dev

在python flask中如何允许用户重新排列列表项并记录在数据库中

来自分类Dev

重新排列纵向数据

来自分类Dev

重新排列数据行

来自分类Dev

重新排列CSV数据

来自分类Dev

重新排列数据框?

来自分类Dev

重新排列纵向数据

来自分类Dev

R重新排列数据