You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对列名匹配列表元素的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:57:03