[英]PYTHON: Creating a dataframe of permutations from a list of tuples
我目前正在嘗試創建一個巨大的排列值表。
locA = [1, 2, 3]
locB = [4, 5, 6]
locC = [7, 8, 9]
在“ loc”內,值被置換。 “位置”中的每個值都來自不同的總體(“ pop1”,“ pop2”,“ pop3”)。 到目前為止,我已經能夠形成一個龐大的元組列表,該列表將“ loc”內部的每個重新排列與“ loc”之間的每個重新排列結合在一起。
permA = list(itr.permutations(locA, 3))
permB = list(itr.permutations(locB, 3))
permC = list(itr.permutations(locC, 3))
permABC = list(itr.product(permA,permB,permC))
permABC
[((1, 2, 3), (4, 5, 6), (7, 8, 9)),
((1, 2, 3), (4, 5, 6), (7, 9, 8)),
((1, 2, 3), (4, 5, 6), (8, 7, 9)),
... etc etc...
((3, 2, 1), (6, 5, 4), (8, 9, 7)),
((3, 2, 1), (6, 5, 4), (9, 7, 8)),
((3, 2, 1), (6, 5, 4), (9, 8, 7))]
我一直試圖將其放入Pandas DataFrame中,但是在遍歷元組列表以進入DataFrame時遇到了麻煩。 :(
理想格式:
loc pop1 pop2 pop3
A 1 2 3 |
B 4 5 6 |>>>> permABC[0]
C 7 8 9 |
... etc etc ...
A 3 2 1 |
B 6 5 4 |>>>> permABC[215]
C 9 8 7 |
我的問題是將元組列表放入數據框。 我需要獲得“ loc”的所有可能組合。 例如,“ locA”的所有可能重排與“ locB”的重排與“ locC”的重排。
為了正確理解這一點,對於每個總體的任何特定排列,我需要進行計算。 為了便於討論,在上文中,對於“ perABC [0]”和“ permABC [215]”,“ pop1”的均值分別為4和6。
我只是不確定如何實時執行此操作,目前在我的編碼級別上,它更容易將內容錨定到我可以操縱的數據框中。 我嘗試使用索引為“ permABC”中的任何給定排列提取特定群體的信息,例如
for item in permABC[0]:
print item[0]
1
4
7
哪個可行,但使用此方法不可行,因為您無法對它們執行任何功能。 返回TypeError“'int'對象不可迭代”。
干杯。
如果您的問題與性能或內存有關:
我認為問題在於您使用了一個生成器itr.permutations
並將整個內容轉換為一個列表:
permC = list(itr.permutations(locC, 3))
從而破壞了發電機的整個點。
您應在生成每個排列時對其進行處理,然后將其丟棄。 這將大大減少您的內存配置文件,並加快計算速度。
for pair in itr.permutations(locC, 3):
# Do your stuff
在上面的代碼中,每對僅在迭代期間存在,之后生成下一對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.