在枢轴后保留列的顺序

时间:2014-06-25 14:41:18

标签: python python-2.7 pandas

我有一个名为A的N x 3 DataFrame,如下所示:

   _Segment _Article  Binaire
0       550  5568226        1
1       550  5612047        1
2       550  5909228        1
3       550  5924375        1
4       550  5924456        1
5       550  6096557        1
....

变量_Article在A中唯一定义(A中有N个唯一的_Article值)。

我做了一个支点:

B=A.pivot(index='_Segment', columns='_Article')

,然后用零替换缺少的值:

B[np.isnan(B)]=0

并获得:

          Binaire                                                        \
_Article  2332299  2332329  2332337  2932377  2968223  3195643  3346080   
_Segment                                                                  
550             0        0        0        0        0        0        0   
551             0        0        0        0        0        0        0   
552             0        0        0        0        0        0        0   
553             1        1        1        0        0        0        1   
554             0        0        0        1        0        1        0   

其中列在数据透视期间按字典顺序排序。

我的问题是:如何在B列中保留A中_Article的排序顺序? 谢谢!

1 个答案:

答案 0 :(得分:0)

我想我明白了。这有效:

首先,存储列_Article

order_art=A['_Article']

在数据透视中,添加"值"避免分层列的参数(参见http://pandas.pydata.org/pandas-docs/stable/reshaping.html),这会阻止reindex正常工作:

B=A.pivot(index='_Segment', columns='_Article', values='_Binaire')

然后,和以前一样,用零替换nan?

B[np.isnan(B)]=0

最后使用reindex在列之间恢复变量_Article的原始顺序:

B=B.reindex(columns=order_art)

有更优雅的解决方案吗?