如何对列名匹配列表元素的Pandas DataFrame按规则执行行值计算
实现方案
思路说明
- 遍历目标列表中的每个元素,分别筛选列名以该元素开头、结尾的列
- 按行对筛选出的两类列分别求和,用开头列的行和减去结尾列的行和,得到该元素对应列的结果
- 最后把所有元素的计算结果拼接为新的DataFrame
注意:你给出的列表
li=[A,B,C]写法存在问题,A、B、C需要加引号定义为字符串,否则会触发变量未定义报错,下文代码已修正该问题。
完整实现代码
import pandas as pd # 初始化原始数据 d = {'A_B': [1, 2], 'A_C': [3, 4], 'B_C': [5, 6]} df = pd.DataFrame(data=d) li = ['A', 'B', 'C'] result_dict = {} for item in li: # 按行统计列名以当前元素开头的和 start_sum = df[[col for col in df.columns if col.startswith(item)]].sum(axis=1) # 按行统计列名以当前元素结尾的和 end_sum = df[[col for col in df.columns if col.endswith(item)]].sum(axis=1) # 计算当前元素对应的列值 result_dict[item] = start_sum - end_sum # 转换为DataFrame格式输出 result_df = pd.DataFrame(result_dict) print(result_df)
输出结果
运行上述代码得到的结果和你给出的计算逻辑完全匹配:
A B C 0 4 4 -8 1 6 4 -10
内容的提问来源于stack exchange,提问作者szczor1
相关产品推荐
相关产品推荐

