在python中使用itertools进行组合

如何解决在python中使用itertools进行组合

我有以下 4 列表格:

cl1: a,b,c   
cl2: x,y,z  
cl3: 1,2,3  
cl4: m,n  

我想要的 df 输出

a_x_1_m  
a_x_1_n  
a_x_2_m  
a_x_2_n  
a_x_3_m  
a_x_3_n  
a_y_1_m  
a_y_1_n  
a_y_2_m  
a_y_2_n  
 ...  
c_z_3_m  
c_z_3_n

我需要它来循环并组合所有可能的组合。使用 python 执行此操作的最佳方法是什么?

解决方法

通过表格,我假设您只是指嵌套列表(也适用于嵌套元组或类似的)。

entryBox = tk.Entry(mainWindow,textvariable=v) entryBox.grid(column=0,row=1)
,

我假设表格是指一个熊猫数据框,所以第一步是将感兴趣的列收集到列表列表中:

         <plugin>
            <artifactId>exec-maven-plugin</artifactId>
            <groupId>org.codehaus.mojo</groupId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <id>Execute External Command</id>
                    <phase>install</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>
                            ${basedir}/external.sh
                        </executable>
                    </configuration>
                </execution>
            </executions>
        </plugin>

现在,如果您有任何包含字符串以外的元素的列表,则需要转换它们:

cols_to_extract = ['cl1','cl2','cl3','cl4']
cols_to_list = [df[col].tolist() for col in cols_to_extract]

最后使用 cols_to_list = [[str(m) for m in n] for n in cols_to_list] 推导出这些列表的乘积:

itertools

结果应该与下面类似:

import itertools

for comb in map('_'.join,itertools.product(*cols_to_list)):
    print(comb)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?