Skip to main content
 首页 » 编程设计

python之如何将许多列的产品创建为新列 pandas

2025年05月04日15unruledboy

我有一个 pandas 数据框:

 import pandas as pd 
 
 df = pd.DataFrame({'dummy_1' : [0, 0, 0, 1, 1, 0], 
                    'dummy_2' : [1, 1, 0, 0, 1, 1], 
                    'dummy_3' : [1, 1, 1, 0, 0, 0]}) 

我想将产品添加为新列(在同一数据框中),每一列的产品,以及其他两列。

因此生成的数据框看起来像这样:

df = pd.DataFrame({     'dummy_1' : [0, 0, 0, 1, 1, 0], 
                        'dummy_2' : [1, 1, 0, 0, 1, 1], 
                        'dummy_3' : [1, 1, 1, 0, 0, 0], 
                        'dummy_12' :[0, 0, 0, 0, 1, 0], 
                        'dummy_13' :[0, 0, 0, 0, 0, 0], 
                        'dummy_23' :[1, 1, 0, 0, 0, 0]}) 

有没有一种有效的方法来做到这一点?高效的意思是一种适用于例如的方式。 50 列

请您参考如下方法:

使用 itertools.combinations 获取所有组合并遍历这些组合以计算向量化乘积并分配给新列

import pandas as pd 
from itertools import combinations 
df = pd.DataFrame({'dummy_1' : [0, 0, 0, 1, 1, 0], 
                'dummy_2' : [1, 1, 0, 0, 1, 1], 
                'dummy_3' : [1, 1, 1, 0, 0, 0]}) 
for i in combinations(df.columns, 2): 
    col_name = i[0] + i[1].split('_')[-1] 
    df[col_name] = df[i[0]] * df[i[1]] 

输出

dummy_1 dummy_2 dummy_3 dummy_12    dummy_13    dummy_23 
0       1       1       0           0           1 
0       1       1       0           0           1 
0       0       1       0           0           0 
1       0       0       0           0           0 
1       1       0       1           0           0 
0       1       0       0           0           0