如何基于指定列组合列表计算Pandas DataFrame的列和?
针对指定列组合计算Pandas DataFrame行求和的实现方法
核心思路
只遍历你指定的列组合,解析每个组合对应的列名,按行计算这些列的数值之和,最后将结果与原Date列合并成新的DataFrame,避免无意义的全组合计算。
具体实现步骤
- 构造示例数据(可替换为你的实际数据集)
import pandas as pd import numpy as np # 生成示例时间序列和随机数值列 dates = pd.date_range('2024-01-01', periods=5) data = { 'Date': dates, 'A': np.random.randint(1, 10, 5), 'B': np.random.randint(1, 10, 5), 'C': np.random.randint(1, 10, 5), 'D': np.random.randint(1, 10, 5), 'E': np.random.randint(1, 10, 5), 'F': np.random.randint(1, 10, 5), 'G': np.random.randint(1, 10, 5), 'H': np.random.randint(1, 10, 5) } df = pd.DataFrame(data)
- 定义需要计算的列组合列表
list_possibilities = ['A+B', 'A+B+D', 'B+D+E+G', 'F+H', 'D+E+F+G+H', 'D', 'F', 'G+H']
- 遍历组合并计算行求和
# 初始化结果字典,保留原Date列 result_dict = {'Date': df['Date']} for combo in list_possibilities: # 拆分组合字符串,提取需要求和的列名 target_cols = combo.split('+') # 按行计算指定列的和,用组合字符串作为新列名 result_dict[combo] = df[target_cols].sum(axis=1) # 将结果字典转换为最终DataFrame final_df = pd.DataFrame(result_dict)
关键说明
split('+')可以快速解析任意组合的列名,不管是单一列(如'D')还是多列组合都能适配。sum(axis=1)指定按行求和,对应每个时间点的列值总和,计算效率高。- 最终的
final_df仅包含Date列和你指定的所有组合求和结果,完全满足需求,且不会产生冗余计算,适合列数超过100的大型数据集。
内容的提问来源于stack exchange,提问作者datadatadata
相关产品推荐
相关产品推荐

