我有一个名为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的排序顺序? 谢谢!
答案 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)
有更优雅的解决方案吗?