簡體   English   中英

PYTHON:從元組列表創建排列的數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM