这是此处上一个问题的后续解答
我正在尝试采用一个数据帧并创建另一个数据帧,将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
如何获得一个新的框架,如下所示:
答案 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