问题描述
我想知道如何通过在数据框中将两组乘以旧列来创建新列。所以如果我有[A,B]和[X,Y]:
A B X Y
0 True False True False
现在,我希望这会导致增加4列,其中只有两个都为true的列才是true:
A B X Y AX BX AY BY
0 True False True False True False False False
在我的情况下,组更大,因此我正在寻找一种可以通过使用列标题[A,B]和[X,Y]的两个列表使用的解决方案。我已经尝试过列表理解,但是我无法使它起作用:-(
解决方法
使用itertools.product
获取列名称的笛卡尔乘积,然后在列表推导内使用Series.mul
创建相应的列乘积,最后使用pd.concat
将这些乘积与{{1} }:
df
结果:
from itertools import product
l1,l2 = ['A','B'],['X','Y']
c = [df[a].mul(df[b]).rename(''.join([a,b])) for a,b in product(l1,l2)]
df = pd.concat([df] + c,axis=1)