彼此有效地减去数据框的每一列?

时间:2019-02-27 20:45:35

标签: python pandas data-science

例如,我有一个下面描述的数据框,我将创建一个新的数据框,该数据框的列将减去以前的列。

给出的数据框:(可以有任意数量的列)

  A    B    C
0  10  100  200
1  15  115  215
2  20  120  220
3  25  125  225
4  30  130  230


Dataframe required
   A-B  A-C  B-A  B-C  C-A  C-B
0  ..
1  ..
2  ..
3  ..
4  

谢谢。

1 个答案:

答案 0 :(得分:2)

  

编辑:使用itertools.permutations而不是Austin Wagner的注释所指出的itertools.combinations来确定一个命令中的所有可能组合。

您需要确定所有可能的组合,并计算每个组合的减法结果。

df = pd.DataFrame({
    'A': [10, 15, 20, 25, 30],
    'B': [100, 115, 120, 125, 130],
    'C': [200, 215, 220, 225, 230]
})

def subtractions_of_combinations(df):
    # Extract all the combinations
    combinations = list(itertools.permutations(df.columns, 2)) 
    # Calculate the two possible subtractions for each combination
    new_df = pd.DataFrame()
    for a, b in combinations:
        new_df[f'{a}-{b}'] = df[a] - df[b]
    return new_df