数据框中3列的所有可能组合

时间:2018-07-09 13:00:37

标签: python pandas itertools

这是此处上一个问题的后续解答

combinations of two columns

我正在尝试采用一个数据帧并创建另一个数据帧,将3列的所有可能组合在一起,并且对应值之间的差,即在11-apr列上的ABC应该为(2B -A-C)= 0,然后2 * BAD = 0,依此类推。

例如,以

开头
        Dt              A           B           C          D
        11-apr          1           1           1          1
        10-apr          2           3           1          2

如何获得一个新的框架,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:3)

我认为需要:

cc = list(combinations(df.columns,3))

df = pd.concat([df[c[1]].mul(2).sub(df[c[2]]).sub(df[c[0]]) for c in cc], axis=1, keys=cc)
df.columns = df.columns.map(''.join)
print (df)
        ABC  ABD  ACD  BCD
Dt                        
11-apr    0    0    0    0
10-apr    3    2   -2   -3