首页 > 解决方案 > 使用reduce组合不同数据帧之间多列的布尔运算

问题描述

我有两个数据框如下

af=pd.DataFrame({'A':[3,7]})

bf=pd.DataFrame({'B': [5, 2], 'C': [1, 4],'D':[6,8]})

我想执行这个操作

(af['A']>bf['B'])|(af['A']>bf['C'])|(af['A']>bf['D'])

我相信使用reduce高阶函数会更简单的方法,迭代 bf 的列并将单个结果折叠到单个列中,但我不知道如何继续

谢谢您的帮助

标签: pythonpandas

解决方案


您可以首先计算,和列bf的最小值:BCD

af['A'] > bf[['B', 'C', 'D']].min(axis=1)

实际上,鉴于af['A']大于该行其他列的最小值,我们知道这些列中至少有一个元素小于 的值af['A']


推荐阅读