我有一個使用Postgres SQL的類似問題,但我認爲這種任務在Postgres中確實很難做到,我認爲python/pandas會使這更容易,儘管我仍然無法完全想出解決方案。所有可能的排列列Pandas Dataframe在同一列內
我現在有一個熊貓數據幀,看起來像這樣:
df={'planid' : ['A', 'A', 'B', 'B', 'C', 'C'],
'x' : ['a1', 'a2', 'b1', 'b2', 'c1', 'c2']}
df=pd.DataFrame(df)
df
planid x
0 A a1
1 A a2
2 B b1
3 B b2
4 C c1
5 C c2
我想在那裏planid不等於彼此所有可能的排列。換句話說,將planid中的每個值看作「桶」,如果我要從planid
中的每個 「桶」中抽取x
的值,我想要所有可能的組合。 (a1,b1,c1),(a1,b2,c1),(a1,b1,c2),(a1,b2,c2),(a2,b1,c1) ,(a2,b2,c1),(a2,b1,c2),(a2,b2,c2)}。
但是,我希望我的結果數據幀爲三列,planid
,x
和另一列,可能名稱爲permutation_counter
。最終數據幀具有標記爲permutation_counter
的所有不同排列。換句話說,我希望我的最終數據框看起來像
planid x permutation_counter
0 A a1 1
1 B b1 1
2 C c1 1
3 A a1 2
4 B b2 2
5 C c1 2
6 A a1 3
7 B b1 3
8 C c2 3
9 A a1 4
10 B b2 4
11 C c2 4
12 A a2 5
13 B b1 5
14 C c1 5
15 A a2 6
16 B b2 6
17 C c1 6
18 A a2 7
19 B b1 7
20 C c2 7
21 A a2 8
22 B b2 8
23 C c2 8
任何幫助將不勝感激!
嘿強尼。這有點容易遵循,但在我的實際情況中,我確實有很多值,並且不能明確指定'a1','b2'等。 – Vincent
儘管感謝您的幫助! – Vincent
@Vincent - 當然,希望它有幫助。我懷疑這可能是一般化來處理您的情況,但我不清楚您的樣本數據將如何映射到您的實際數據。 Happy001以一種聰明的方式處理了這個問題(對from_product使用groupby),希望這對你的真實數據也有效,但我不確定它會如何。實際上,我們的答案基本上都是一樣的,所以你可以混合和匹配每個片段。 – JohnE