2017-09-04 71 views
0

例如:如何從熊貓數據框中創建同一行數據的排列?在我的數據幀一排

 col1 col2 col3 col4 col5 col6 
1  A B C D E F 

我想創建col1,2,3和col4,5,6的不同排列

所以我的數據幀應該是這樣的:

 col1 col2 col3 col4 col5 col6 
1  A B C D E F 
2  B C A D E F 
3  C A B D E F 
4  A C B D E F 
5  B A C D E F 
6  A B C E F D 
7  A B C F E D 
8  A B C F D E 
... 

嘗試itertools,但它只允許我垂直洗牌數據? 任何幫助,將不勝感激:)

回答

2

這裏有一個方法

In [1609]: import itertools 

In [1610]: vals = df.values[0] 

In [1611]: b1 = list(itertools.permutations(vals[:3], 3)) 

In [1612]: b2 = list(itertools.permutations(vals[3:], 3)) 

In [1613]: pd.DataFrame([y + x for x in b2 for y in b1], columns=df.columns) 
Out[1613]: 
    col1 col2 col3 col4 col5 col6 
0 A B C D E F 
1 A C B D E F 
2 B A C D E F 
3 B C A D E F 
4 C A B D E F 
5 C B A D E F 
6 A B C D F E 
7 A C B D F E 
8 B A C D F E 
9 B C A D F E 
............................... 
............................... 
+0

謝謝,它的工作原理。如果我有一個col7 == T或F,我想保持不變?我如何將col7與每個排列組合? – dhecloud