将大熊猫数据框的每一列与同一数据框的其他每一列相乘的最有效方法

杰克逊5

假设我有一个看起来像这样的数据集:

INDEX   A   B   C
    1   1   1   0.75
    2   1   1   1
    3   1   0   0.35
    4   0   0   1
    5   1   1   0

我想获得一个如下所示的数据框,其中包含原始列以及列之间的所有可能的交互:

INDEX   A   B   C       A_B     A_C     B_C
    1   1   1   0.75    1       0.75    0.75
    2   1   1   1       1       1       1
    3   1   0   0.35    0       0.35    0
    4   0   0   1       0       0       0
    5   1   1   0       1       0       0

我的实际数据集非常大(〜100列)。最快的方法是什么?

我当然可以做一个嵌套循环或类似的方法来实现这一目标,但我希望有一种更有效的方法。

罗素

您可以为此使用itertools.combinations

>>> import pandas as pd
>>> from itertools import combinations
>>> df = pd.DataFrame({
...     "A": [1,1,1,0,1],
...     "B": [1,1,0,0,1],
...     "C": [.75,1,.35,1,0]
... })
>>> df.head()
   A  B     C
0  1  1  0.75
1  1  1  1.00
2  1  0  0.35
3  0  0  1.00
4  1  1  0.00
>>> for col1, col2 in combinations(df.columns, 2):
...     df[f"{col1}_{col2}"] = df[col1] * df[col2]
...
>>> df.head()
   A  B     C  A_B   A_C   B_C
0  1  1  0.75    1  0.75  0.75
1  1  1  1.00    1  1.00  1.00
2  1  0  0.35    0  0.35  0.00
3  0  0  1.00    0  0.00  0.00
4  1  1  0.00    1  0.00  0.00

如果需要对成对的列向量化任意函数,则可以使用:

import numpy as np

def fx(x, y):
    return np.multiply(x, y)

for col1, col2 in combinations(df.columns, 2):
    df[f"{col1}_{col2}"] = np.vectorize(fx)(df[col1], df[col2])

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何有效地将一个Pandas数据框的每一列与另一数据框的每一列相乘?

Python大熊猫使用Dict映射将格式化应用于数据框中的每一列

如何洗牌熊猫数据框的每一列?

python中是否有一种有效的方法可以将矩阵中的每一列与同一矩阵中的所有列相乘?

在同一数据框熊猫中将多列合并为一列

如何将数据框的每一列附加到熊猫系列中?

大熊猫:从另一列修改数据框中的值

大熊猫:绘制包含一列元组的数据框

快速获取熊猫数据框中每一列的前k个元素的索引的方法

将数据框的每一列除以数据框的一行

将数据框的每一列除以另一个数据框的所有列

将一个数据框的每一列与另一数据框列进行比较,并将每个结果重叠打印到单独的文件中

同一数据帧的每两列连续相乘

熊猫:创建将一列与其他两列相关的数据框

如何将数据框A中的每一列除以数据框B中同一列的中位数?

在Oracle数据库中从联接查询结果为每一行更新一列的最有效方法是什么?

将依赖于同一列的同一数据帧的两列相乘

是否将函数应用于pandas数据框的每一列而没有for循环?

将数据框中的每一列转换为单独的数据框

将Pandas数据框转换为每一列的字典列表的最佳方法

如何总结数据框中的每一列?

数据框:子图中不同图中的每一列

为数据框的每一列替换特殊值

从数据框的每一列中删除不同的值

大熊猫将每一行和每一列中的数字转换为单词

为熊猫数据框的每一行替换一列中的字符串

如何计算熊猫数据框中每一列的唯一性?

将一列移至另一数据框熊猫

根据同一数据框另一列中的字符将文本列添加到数据框