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

Python对比不同大小DataFrame按条件判断生成布尔列报错求解

错误原因

  • 参与比较的两个DataFrame列名不匹配:主表mdf列名为A/B/C,辅表取出的阈值列名为A_up/B_up/C_up、A_low/B_low/C_low,列名无法对齐导致无法直接比较
  • 辅表adf仅1行,与多行主表直接比较时索引不匹配,pandas无法自动处理维度对齐

修正实现

import pandas as pd
import numpy as np

# 样例数据初始化
mdf = pd.DataFrame({
    'A': [3, -3, 4, 1],
    'B': [0, -4, -3, -8],
    'C': [-2, -5, 5, 1]
})
adf = pd.DataFrame({
    'A_low': [-2], 'A_up': [2],
    'B_low': [-6], 'B_up': [-2],
    'C_low': [-4], 'C_up': [4]
})

# 提取辅表阈值转为一维数组,适配主表的广播计算
low_thresh = adf[['A_low', 'B_low', 'C_low']].iloc[0].values
up_thresh = adf[['A_up', 'B_up', 'C_up']].iloc[0].values

# 批量计算判断结果并追加到主表
mdf[[f'{col}_op' for col in mdf.columns]] = (mdf > low_thresh) & (mdf < up_thresh)

运行后输出的mdf与期望结果完全一致。

内容的提问来源于stack exchange,提问作者Mainland

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 19:45:04