简体   繁体   English

如何使用 pandas dataframe 作为其他 dataframe 的条件

[英]How to use pandas dataframe as condition for other dataframe

Say I have dataframe A:假设我有 dataframe A:

      A B  C
lower 1 0 -5
upper 2 2  0

and dataframe B:和 dataframe B:

     A  B  C
sa   5  1 -2
sb   3  0  2
sc   1 -5  1

How can I use dataframe A as a condition for dataframe B, so that df B's cells are within the upper and lower values of df A. The ideal output is this: (first cell is explanatory)如何使用 dataframe A 作为 dataframe B 的条件,以使 df B 的单元格在 df A 的upperlower范围内。理想的 Z78E6221F6393D1356681DB398F1 是解释性的:

     A                     B      C
sa   (5>=1)&(5<=2)=False   True   True
sb   False                 True   False
sc   True                  False  False

You can chain mask with compare selected rows by DataFrame.loc in A with DataFrame.ge and DataFrame.le by & for bitwise AND :您可以链接掩码与比较选定的行DataFrame.locADataFrame.geDataFrame.le按位& AND

Notice - columns names have to match in both DataFrame s.注意 - 列名必须在两个DataFrame中匹配。

df = B.ge(A.loc['lower']) & B.le(A.loc['upper'])
#alternative
#df = (B>= A.loc['lower']) & (B <= A.loc['upper'])
print (df)
        A      B      C
sa  False   True   True
sb  False   True  False
sc   True  False  False

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM