如何为Pandas DataFrame多列的所有组合计算和并新增对应列?
问题描述
现有如下Pandas DataFrame:
import pandas as pd df = pd.DataFrame({'id': ['a', 'b', 'c', 'd'], 'colA': [1, 2, 3, 4], 'colB': [5, 6, 7, 8], 'colC': [9, 10, 11, 12], 'colD': [13, 14, 15, 16]})
需要获取colA、colB、colC、colD的所有长度≥2的组合,计算每个组合的和并作为新列添加到原DataFrame中。已通过itertools获取所有组合:
from itertools import combinations cols = ['colA', 'colB', 'colC', 'colD'] all_combinations = [c for i in range(2, len(cols)+1) for c in combinations(cols, i)]
如何完成后续的求和与列添加操作?预期输出包含所有组合的求和列,例如colA+colB、colB+colC直至colA+colB+colC+colD。
解决方案
遍历已生成的组合列表,对每个组合对应的列求和,并用组合名称拼接成新列名添加到DataFrame中:
# 遍历所有列组合 for combo in all_combinations: # 拼接新列名(用+连接组合中的列名) new_col_name = '+'.join(combo) # 计算组合列的行和,添加为新列 df[new_col_name] = df[list(combo)].sum(axis=1)
执行上述代码后,原DataFrame会自动新增所有符合要求的求和列,结果与预期输出完全一致。
内容的提问来源于stack exchange,提问作者crx91
相关产品推荐
相关产品推荐

