首页 > 解决方案 > 在数据框中相互减去每一列

问题描述

我们有一个df包含 n 列的 as 数据框。我想从彼此中减去每一列,例如(n 是列数):

标签: pythonpython-3.xpandas

解决方案


假设您正在寻找这样的东西 - 将每对列的差异转换为每对的新列

考虑pd.DataFrame具有 5 行和 4 列的 a - A、B、C、D - 具有所有随机值

df = pd.DataFrame(np.random.randint(0, 5, size=(5, 4)), columns=list('ABCD'))

对于每对列(使用 获取对itertools.combinations(),创建一个以该对作为列名的新列(或您希望新列名的任何内容)并将 的差异设置tuple为值。

for comb in (list(itertools.combinations(df.columns, r=2))):
    df[comb] = (df[comb[0]] - df[comb[1]])

print(df)

结果:

   A  B  C  D  (A, B)  (A, C)  (A, D)  (B, C)  (B, D)  (C, D)
0  0  1  1  1      -1      -1      -1       0       0       0
1  1  0  0  1       1       1       0       0      -1      -1
2  2  4  0  2      -2       2       0       4       2      -2
3  0  2  4  2      -2      -4      -2      -2       0       2
4  4  1  3  0       3       1       4      -2       1       3

这适用于任意数量的列。


推荐阅读