我试图从几行的dataframe列中获取不同的必需组合。它类似于下面的内容: 我在df
的其中一列中有以下值Oy
On
G1
G2
A1
A2
A3
A4
R1
R2
R3
L1
L2
A5
A6
这里,oy,属于第1组,
G1,g2 - group 2,
A1 to a4 - group 3,
R1 to r3 - group 4,
L1,l2 - group 5,
A5,a6 - group 6
现在我正在尝试从每个组的每个值开始的所有组合,范围从1到下面的所有值:
Oy
Oy g1
Oy g1 a1
Oy g1 a1 r1
Oy g1 a1 r1 l1
Oy g1 a1 r1 l1 a5
这将是所有可能的组合。注意组内组合是不可取的,如g1和g2不能组成相同的组合。
我知道对于带有一些if条件的for循环,这是可能的。但是寻找更有效和更优雅的解决方案。
答案 0 :(得分:0)
我想你可能希望对各种分组itertools.product
。
获得你可以做的小组
first_letter = df[col].str[0].str.lower()
groups = df[col].groupby(first_letter).unique()
(col
这里是上面描述的列的名称)。
这给出了从第一个字母(小写)到以该字母开头的唯一值数组(大写或小写)的映射。然后你可以itertools.product(*groups)
来获得包含每个组中一个成员的所有六元组。
要获得g和o组的所有组合,您可以执行itertools.product(*groups[['g', 'o']])