如何计算DataFrame非重复列组合总计并保留至原表
实现方法
可以通过以下步骤完成需求:
- 生成非重复列组合:使用
itertools.combinations生成所有无序的列对,自动排除a_b和b_a这类重复组合,4列的话会得到C(4,2)=6种有效组合。 - 计算组合列的总计并添加到原DataFrame:遍历每个列组合,对每行计算两列的和,以
列名1_列名2作为新列名,将结果添加到原DataFrame中。
完整代码示例
import pandas as pd from itertools import combinations # 初始化原始DataFrame df = pd.DataFrame({'a': [1,2,3,4,2], 'b': [3,4,1,0,4], 'c':[1,2,3,1,0], 'd':[3,2,4,1,4]}) # 生成所有非重复的列组合(无序) column_combinations = combinations(df.columns, 2) # 遍历组合,计算每行的和并添加为新列 for cols in column_combinations: col_name = f"{cols[0]}_{cols[1]}" df[col_name] = df[cols[0]] + df[cols[1]] # 查看结果 print(df)
结果说明
执行后,原DataFrame会新增6个列:a_b、a_c、a_d、b_c、b_d、c_d,每个列对应原两列的行级求和结果,完全满足非重复组合总计的需求。
内容的提问来源于stack exchange,提问作者jack homareau
相关产品推荐
相关产品推荐

