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

如何在Pandas中按特定模式匹配列并计算列间差值

批量处理Pandas DataFrame中对应列的减法并生成差值列

我明白你想要实现的是不用手动逐个处理列,而是自动匹配那些前缀和中间部分相同、仅以_x/_y结尾的列,计算它们的差值并生成带_diff后缀的新列对吧?这确实能节省大量重复操作的时间,我给你一个简洁可靠的实现方案:

实现思路

首先我们需要从列名中提取出核心标识(也就是去掉末尾的_x/_y后的部分,比如WT_IGL_x的核心标识是WT_IGL),然后针对每个核心标识,找到对应的_x和_y列,计算x列 - y列的差值,最后将结果存入新的[核心标识]_diff列中。

完整代码示例

import pandas as pd

# 创建你提供的简化版DataFrame
df = pd.DataFrame({
    'WT_IGL_x':[1,2,3,2,1,1,3,4,1,2], 
    'LA_WHN_x':[1,0,1,0,1,1,0,0,1,0], 
    'LA_WHN_y':[2,1,2,3,3,4,1,1,2,1], 
    'WT_IGL_y':[2,1,2,3,3,4,1,1,2,1], 
    'GT_OPP_IGL_x':[1,2,3,2,1,1,3,4,1,2], 
    'GT_OPP_IGL_y':[1,2,3,2,1,1,3,4,1,2]
})

# 提取所有列的核心标识(去掉末尾的_x/_y)
core_names = list(set(col.rsplit('_', 1)[0] for col in df.columns))

# 批量计算差值并新增列
for core in core_names:
    # 先确认对应的x和y列都存在,避免报错
    if f"{core}_x" in df.columns and f"{core}_y" in df.columns:
        df[f"{core}_diff"] = df[f"{core}_x"] - df[f"{core}_y"]

# 查看最终结果
print(df)

代码说明

  1. 提取核心标识:col.rsplit('_', 1)[0]会从列名的最后一个下划线处拆分,比如LA_WHN_x拆分后得到LA_WHN;用set去重是为了确保每个核心标识只被处理一次。
  2. 批量计算差值:遍历每个核心标识,先检查对应的_x和_y列是否都存在(防止因列缺失导致的错误),然后直接计算x列 - y列,并将结果赋值给新的[core]_diff列。

运行这段代码后,你得到的DataFrame就和你期望的输出完全一致了——自动生成了WT_IGL_diff、LA_WHN_diff和GT_OPP_IGL_diff三列,差值计算准确无误。

内容的提问来源于stack exchange,提问作者Yun Tae Hwang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:17:38