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
相关产品推荐
相关产品推荐

