我目前正在尝试创建一个庞大的置换值表。
locA = [1, 2, 3]
locB = [4, 5, 6]
locC = [7, 8, 9]
“loc”内的值是置换的。“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))]
我一直试图将它放入熊猫的数据帧中,但是我在遍历元组列表以放入数据帧时遇到了困难。:(
理想格式:
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' object is not iterable”。
干杯。
如果您的问题与性能或内存有关:
我认为问题在于你用一个生成器< code>itr.permutations把所有东西转换成一个列表:
permC = list(itr.permutations(locC, 3))
从而破坏了发电机的全部功能。
你应该在每个排列产生的时候处理它,然后扔掉它。这将大大降低你的内存配置文件,也加快了你的计算速度。
for pair in itr.permutations(locC, 3):
# Do your stuff
在上面的代码中,每一对都只在迭代期间存在,之后下一对就会生成。
问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 我有两个清单: 我需要从这些列表中创建一个元组列表,如下所示: 我尝试这样做: 但导致: 即x中每个元素与y中每个元素的元组列表…什么是我想做的正确方法?谢谢… 编辑: 在编辑之前提到的其他两个重复是我的错,我将其缩进另一个for循环中是错误的… 问题答案: 使用内置函数: 在Python 3中: 在Python 2中:
问题内容: 我有一个像这样的清单: 但是更大了,所以我需要一种有效的方法来使它变成像这样的树: 我不能使用诸如嵌套集之类的东西,也不能使用诸如becoas之类的东西,因为我可以在数据库中添加左右值。有任何想法吗? 问题答案: 哦,这就是我解决的方法:
我有这样的df: 如何将转换为元组列表并分配给变量?然后创建一个只有col4的数组并赋值给变量? 示例最终结果:
问题内容: 我正在尝试在表中插入数组,但需要将列表转换为SQL Array类型。我正在使用该方法,但出现异常。 我需要传递一个类型名称,但是我不知道这是什么,而且我总是会遇到异常。该数组来自VARCHAR。 我该如何解决插入数组? 代码 堆栈跟踪 问题答案: 使用“ varchar”而不是“ VARCHAR”。参见http://grepcode.com/file/repo1.maven.org/m
问题内容: 我需要增量填充列表或列表元组。看起来像这样: 为了使它不那么冗长,更优雅,我想我会预先分配一个空列表 预分配部分对我来说并不明显。当我这样做时,我会收到对同一列表的引用列表,因此以下内容的输出 是: 我可以使用循环(),但我想知道是否存在“无环”解决方案。 是获得我想要的东西的唯一方法 问题答案: 这将创建x个不同的列表,每个列表都有一个列表副本(该列表中的每个项目都是通过引用提供的,
问题内容: 我有这样的数据我想创建一个PySpark数据框 我已经用过 但我总是得到 我如何获得如下所示的结果? 问题答案: 我发现将参数视为元组列表很有用,其中列表中的每个条目对应于DataFrame中的一行,而元组的每个元素对应于一列。 您可以通过将列表中的每个元素设为元组来获得所需的输出: 或者,如果更改源很麻烦,则可以等效地执行以下操作: