如何从python中的不同行列获取所需的组合

时间:2017-06-08 05:50:26

标签: python

我试图从几行的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循环,这是可能的。但是寻找更有效和更优雅的解决方案。

1 个答案:

答案 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']])