在数据框中生成7列的所有组合,并添加相应的行以生成新列

大脑溢出

我有一个类似于以下内容的数据框:

Wave    A    B   C
340    77   70  15
341    80   73  15
342    83   76  16
343    86   78  17

我想生成将包含现有列的所有可能组合的列。我在这里显示了3个列,但在我的实际数据中,我有7列,因此共有127种组合。所需的输出如下:

Wave    A    B   C   AB   AC   AD   BC ... ABC
340    77   70  15   147  92   ...
341    80   73  15   153  95   ... 
342    83   76  16   159  99   ...

我实现了一个效率很低的版本,用户输入组合(AB,AC等),然后使用行的总和创建一个新的col。对于127种组合(尤其是具有描述性的列名),这似乎几乎是不可能实现的。

洛兹

使用itertools中的chain+创建所有组合的列表combinations,然后对相应的列求和:

from itertools import combinations, chain

cols = [*df.iloc[:,1:]]
l = list(chain.from_iterable(combinations(cols, n+2) for n in range(len(cols))))
#[('A', 'B'), ('A', 'C'), ('B', 'C'), ('A', 'B', 'C')]

for items in l:
    df[''.join(items)] = df.loc[:, items].sum(1)

   Wave   A   B   C   AB   AC  BC  ABC
0   340  77  70  15  147   92  85  162
1   341  80  73  15  153   95  88  168
2   342  83  76  16  159   99  92  175
3   343  86  78  17  164  103  95  181

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

基于组事件在数据框中生成新列

如何在具有许多列的pandas数据框中生成列的所有可能组合?

在 pandas 数据框中生成所有列的乘法(乘积)组合

如何在 4 个不同的 pandas 数据框中生成所有可能的列组合(没有任何库)

如何在 4 个不同的 pandas 数据框中生成所有可能的列组合(没有任何库)

如何使用“for-loop”和列添加在数据框中生成列?

根据嵌套组中的组事件在数据框中生成新列

在数据框中生成新列,按组计数重复项

在数据框中生成日期列

遍历数据框中的所有行并根据比较其他列生成新列

在python中生成数组列的所有可能组合

在数据面板中生成列模式

用于从数据框中生成所述组合的相对丰度的所有可能组合

具有 value_counts 的 Pandas groupby 并在新数据框中生成列

在 python 中创建一个带有“while”循环的函数,并使用该函数在数据框中生成一个新列

通过基于R?中的分位数来分配值,从而在数据框中生成新列。

在我有数据框列表的所有数据框的列中生成连续的“id”字段

来自数据框列的所有可能组合的新列

如何在R数据框中生成具有来自多个列的有序项的新列

如何在数据框中生成缺失行

在数据框中生成带有条件值的行

使用唯一的列值对在数据框中生成二元标识符

使用Pyspark根据多个值在数据框中生成n列

如何在数据框中按行应用函数以在r中生成新的或扩展的数据框

基于跨多个列应用函数,在R数据框中生成新列

比较行与条件并在 Pandas 中生成新的数据框

在 SQL 中生成所有可能的组合?

在Python中生成所有可能的组合

奇怪的行为。创建新列时,Pandas数据框中生成的单个负值